我正在使用Delphi 2010和 superobject 库 .
我已经了解如何解析json文件,但我不知道如何创建json?
算法是:
解析JSON并在TStringGrid中加载
添加数据
将所有TStringGrid数据保存到json .
需要一些例子 .
谢谢 .
代码示例将以下结构提供给JSON对象,然后保存到文件:
(* { "name": "Henri Gourvest", /* this is a comment */ "vip": true, "telephones": ["000000000", "111111111111"], "age": 33, "size": 1.83, "adresses": [ { "adress": "blabla", "city": "Metz", "pc": 57000 }, { "adress": "blabla", "city": "Nantes", "pc": 44000 } ] } *) procedure SaveJson; var json, json_sub: ISuperObject; begin json := SO; json.S['name'] := 'Henri Gourvest'; json.B['vip'] := TRUE; json.O['telephones'] := SA([]); json.A['telephones'].S[0] := '000000000'; json.A['telephones'].S[1] := '111111111111'; json.I['age'] := 33; json.D['size'] := 1.83; json.O['addresses'] := SA([]); json_sub := SO; json_sub.S['address'] := 'blabla'; json_sub.S['city'] := 'Metz'; json_sub.I['pc'] := 57000; json.A['addresses'].Add(json_sub); json_sub.S['address'] := 'blabla'; json_sub.S['city'] := 'Nantes'; json_sub.I['pc'] := 44000; json.A['addresses'].Add(json_sub); json.SaveTo('C:\json_out.txt'); json := nil; json_sub := nil; end;
阅读帮助文件:https://github.com/hgourvest/superobject/blob/master/README.md
然后阅读TSuperArray的来源('使用来源,卢克')
结果如下:
var obj: ISuperObject; a: TSuperArray; // shortcut begin obj := TSuperObject.Create(stArray); // or obj := SA([]); a := obj.AsArray; a.s[0] := 'aaaa'; a.s[1] := 'bbbb'; a.s[3] := 'cccc'; ... obj.SaveTo('File.txt'); a := nil; obj := nil; ... end;
帮助文件中也有引用:obj ['foo[]']:= value; //添加一个项目数组这表明填充数组的另一种方法(如果根对象本身不是数组) . 引用http://code.google.com/p/superobject/source/browse/tests/test_usage.dpr
my_array := TSuperObject.Create(stArray); my_array.I[''] := 1; // append my_array.I[''] := 2; // append my_array.I[''] := 3; // append my_array.I['4'] := 5;
之后,此对象数组作为属性插入到另一个对象中
my_object := TSuperObject.Create(stObject); my_object.I['abc'] := 12; // my_object.S['path.to.foo[5]'] := 'bar'; my_object.B['bool0'] := false; my_object.B['bool1'] := true; my_object.S['baz'] := 'bang'; my_object.S['baz'] := 'fark'; my_object.AsObject.Delete('baz'); my_object['arr'] := my_array;
一个非常好的库是LkJson:http://sourceforge.net/projects/lkjson/
var jsText:String; jsObj:TlkJSONobject;开始
jsObj:=TlkJSON.ParseText(jsText) as TlkJSONobject;
jsText := TlkJSON.GenerateText(jsObj);
3 回答
代码示例将以下结构提供给JSON对象,然后保存到文件:
阅读帮助文件:https://github.com/hgourvest/superobject/blob/master/README.md
然后阅读TSuperArray的来源('使用来源,卢克')
结果如下:
帮助文件中也有引用:obj ['foo[]']:= value; //添加一个项目数组
这表明填充数组的另一种方法(如果根对象本身不是数组) . 引用http://code.google.com/p/superobject/source/browse/tests/test_usage.dpr
之后,此对象数组作为属性插入到另一个对象中
一个非常好的库是LkJson:http://sourceforge.net/projects/lkjson/
解析:
var jsText:String; jsObj:TlkJSONobject;开始
将其转换回文本: