fpjson读写JSON
free pascal语言读写json串,本方法在CodeTyphon上测试通过
需引用单元:fpjson,JsonParser
procedure TForm1.Button2Click(Sender: TObject);
var jData:TJSONData;
jDataArr:TJSONData;
jObject:TJSONObject;
jArray:TJSONArray;
s:String;
begin
try
s:=Memo1.Text; //json数据源
jData:=GetJSON(s); //获取json数据
Memo2.Text:=jData.AsJSON; //格式化json一
//Memo2.Text:=jData.FormatJSON; //格式化json二
jObject:=TJSONObject(jData); //json数据结构化一
//jObject:=jData as TJSONObject; //json数据结构化二
Memo2.Lines.Add(jObject.Strings['infocode']); //读取json键值一
//Memo2.Lines.Add(jObject.Get('infocode','')); //读取json键值二,第2个参数为默认值
jObject.Integers['infocode']:=10101; //给键重新赋值
jObject.Add('update',now()); //新增一对键值
jDataArr:=jData.FindPath('lives[0].city'); //查找多层json路径,返回jsonData
Memo2.Lines.Add(jDataArr.AsJSON); //读取多层json键值一
//Memo2.Lines.Add(jDataArr.FormatJSON); //读取多层json键值二
jArray:=TJSONArray.Create; //创建json空数组
jArray.Add('東'); //给数据添加元素
jArray.Add('南');
jArray.Add('西');
jArray.Add('北');
jObject.Add('方位',jArray); //给数组命名并赋值
Memo2.Lines.Add(jData.FindPath('方位[0]').AsString); //取出方位数组的第一个元素:東
except
on E:EHttpClient do
ShowMessage(e.Message);
end;
//最后要释放jData,否则会出现内存泄漏
//jData.Free;
//jDataArr.Free;
//参考信息来源 https://wiki.freepascal.org/fcl-json
end;