最近在用Delphi解析JSON字符串的时候,发现一个坑,记录一下,也给有碰到相同问题的朋友们一个提醒吧。
先直接上代码
var
jsonObject:TJSONObject;
jsonStr:String;
begin
jsonStr:='{"code":1}'; //成功的例子
jsonStr:='{"code":0001}'; //<==失败的例子
jsonStr:='{"code":"0001"}'; //成功的例子
jsonObject:=TJSONObject.ParseJSONValue(jsonStr) as TJSONObject;
if jsonObject=nil then
begin
ShowMessage('json解析失败');
end
else
begin
ShowMessage('json解析成功');
end;
end;
如果json字符串中的value是数字类型的,如果这个数字类型不合法(其实像0001也算合法吧,但是Delphi的内置JSON解析对象会将这种归为非正常的数字类型数据),然后导致解析失败!
具体原因也没深入去研究,可能是TJSONNumber对象对这种0001的value判定为不合法的数据原因吧!