JSON

如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码

字号+ 作者:H5之家 来源:H5之家 2017-05-10 11:15 我要评论( )

一直想找如何解析JSON数据的说,今天终于找到有人发帖子了。之前有人说用superobject,Tlkjson,delphi json library,delphi web unit等等。其实我是想找比较简

一直想找如何解析JSON数据的说,今天终于找到有人发帖子了。之前有人说用superobject,Tlkjson,delphi json library,delphi web unit等等。其实我是想找比较简单的解析方式。解析简单的json。下面是转载的坦然的源码。unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,DBXJSON; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} const GJSONString = '{' + ' "name": {'+ ' "A JSON Object": {' + ' "id": "1"' + ' },' + ' "Another JSON Object": {' + ' "id": "2"' + ' }' + ' },' + ' "totalobjects": "2"' + '}'; procedure TForm1.Button1Click(Sender: TObject); var LJSONObject: TJSONObject; Value: TJSONValue; begin LJSONObject := nil; try LJSONObject := TJsonObject.Create; Value := TJSONValue.Create; { convert String to JSON } LJSONObject.Parse(BytesOf(GJSONString), 0); Value :=LJSONObject.GetValue('name'); ShowMessage(Value.ToString); finally LJSONObject.Free; end; end; end.

灰常好,在此谢谢博主。

但是这样处理中文的时候会出现乱码现象。我对代码稍微修改了一下:

var jo:tjsonobject; jv:tjsonvalue; jsonstr:string;//要转换的json字符串 begin jo:=nil; jsonstr:='{"name":"流川枫","interest":"与樱木吵架"}; try jo:=tjsonobject.create; jo:=tjsonobject.parsejsonvalue(tencoding.utf8.getbytes(jsonstr),0) as tjsonobject; jv:=jo.get('interest').jsonvalue; showmessage(jv.value); finally jo.Free; end; end;
终于能转换成中文了。

下面是关于jsonobject的解析(举一反三):

procedure TForm1.Button1Click(Sender: TObject); var jsonstr: string; jvalue: tjsonvalue; jobj: tjsonobject; jpair: tjsonpair; jarray: tjsonarray; begin jsonstr:='{'name':'tom','password':'tomcat','interests':['mouse','meat']}'; jvalue := tjsonobject.ParseJSONValue (tencoding.UTF8.GetBytes(jsonstr), 0); try jobj := jvalue as tjsonobject; jpair := jobj.Get(2); // get the third json pair jarray := jpair.JsonValue as tjsonarray; // pair value is an array ['mouse','meat'] strresult := jarray.Get(0).value; // first element of array['mouse','meat'] showmessage(strresult);//it is mouse finally jvalue.Free; end; end;

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android中使用Gson解析JSON数据的两种方法

    Android中使用Gson解析JSON数据的两种方法

    2017-05-08 18:01

  • path解析json方便可靠

    path解析json方便可靠

    2017-05-08 10:01

  • Delphi Superobject,通用列表到json

    Delphi Superobject,通用列表到json

    2017-05-08 09:00

  • Android框架之路Json解析一篇就够(原生技术+Gson+FastJson)

    Android框架之路Json解析一篇就够(原生技术+Gson+FastJson)

    2017-05-04 09:05

网友点评
!