TA的每日心情 | 开心 2022-11-20 19:29 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
终于搞定多层json读取问题了,flag下希望能帮到有需要的朋友们。
引用单元:fpjson,JsonParser
- procedure TForm1.Button2Click(Sender: TObject);
- var jData:TJSONData;
- jDataArr:TJSONData;
- jObject:TJSONObject;
- jArray:TJSONArray;
- s:String;
- begin
- try
- s:=Memo1.Text;
- 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;
复制代码
|
|