1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-11 01:42:22 +03:00

Allow the labels on JSON objects to be unquoted identifier names.

FossilOrigin-Name: fb428db3f64f148ab9a3478fdcc8b3733e58102b3c8895a482e2551d974d5661
This commit is contained in:
drh
2023-04-27 15:11:26 +00:00
parent 0d8579120a
commit ef3a162be6
3 changed files with 21 additions and 9 deletions

View File

@@ -1059,13 +1059,25 @@ json_parse_restart:
if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
x = jsonParseValue(pParse, j);
if( x<=0 ){
pParse->iDepth--;
if( x==(-2) ){
j = pParse->iErr;
if( pParse->nNode!=(u32)iThis+1 ) pParse->has5 = 1;
pParse->iDepth--;
break;
}
return -1;
j += json5Whitespace(&z[j]);
if( sqlite3Isalpha(z[j]) || z[j]=='_' || z[j]=='$' ){
int k;
for(k=j+1; sqlite3Isalnum(z[k]) || z[k]=='_' || z[k]=='$'; k++){}
jsonParseAddNode(pParse, JSON_STRING, k-j, &z[j]);
if( !pParse->oom ){
pParse->aNode[pParse->nNode-1].jnFlags = JNODE_RAW;
}
pParse->has5 = 1;
x = k;
}else{
return -1;
}
}
if( pParse->oom ) return -1;
pNode = &pParse->aNode[pParse->nNode-1];