JsonToken JPath uses double quotes (PC0014)
When using JPath expressions to query JSON, string values within the path should use double quotes, not single quotes. Single quotes in JPath expressions may not work correctly.
This rule applies to the SelectToken and SelectTokens methods on JsonToken, JsonObject, and JsonArray.
A code fix is available for this diagnostic.
Example: SelectToken
The following code uses single quotes in JPath:
codeunit 50100 MyCodeunit
{
procedure ReadJson()
var
JsonObject: JsonObject;
JsonToken: JsonToken;
begin
JsonObject.SelectToken('$[?(@.name==''John'')]', JsonToken); // JsonToken JPath uses double quotes [PC0014]
end;
}
To fix this, use double quotes:
codeunit 50100 MyCodeunit
{
procedure ReadJson()
var
JsonObject: JsonObject;
JsonToken: JsonToken;
begin
JsonObject.SelectToken('$[?(@.name=="John")]', JsonToken);
end;
}
Example: SelectTokens
The same rule applies to SelectTokens:
codeunit 50100 MyCodeunit
{
procedure ReadJson()
var
MyJsonToken: JsonToken;
Results: List of [JsonToken];
begin
MyJsonToken.SelectTokens('$.items[?(@.status==''active'')]', Results); // JsonToken JPath uses double quotes [PC0014]
end;
}
To fix this, use double quotes:
codeunit 50100 MyCodeunit
{
procedure ReadJson()
var
MyJsonToken: JsonToken;
Results: List of [JsonToken];
begin
MyJsonToken.SelectTokens('$.items[?(@.status=="active")]', Results);
end;
}