delphi解析json(解决乱码问题)

unit Unit2;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListView.Types,
FMX.ListView.Appearances, FMX.ListView.Adapters.Base, FMX.ListView,json,
FMX.ScrollBox, FMX.Memo, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP;

type
TForm2 = class(TForm)
Button1: TButton;
Memo1: TMemo;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.Button1Click(Sender: TObject);
function getJSONValue(jsonstr: string; jsonvalue:string): string;
var
jo: tjsonobject;
jv: tjsonvalue;
begin
jo := nil;
try
jo := tjsonobject.Create;
jo := tjsonobject.ParseJSONValue(tencoding.UTF8.GetBytes(jsonstr), 0)
as tjsonobject;
jv := jo.Get(jsonvalue).jsonvalue;
Result := jv.Value;
finally
jo.Free;
end;
end;

var
IdHTTP: TIdHTTP;
RequestURL: string;
ResponseStream: TStringStream;
JO, JData: TJSONObject;
kkk,s:string;
LJsonArr : TJSONArray;
LJsonValue : TJSONValue;
LItem : TJSONValue;
begin
IdHTTP := TIdHTTP.Create(nil);
IdHTTP.ReadTimeout := 0;
IdHTTP.AllowCookies := True;
IdHTTP.ProxyParams.BasicAuthentication := False;
IdHTTP.ProxyParams.ProxyPort := 0;
IdHTTP.Request.ContentLength := -1;
IdHTTP.Request.ContentRangeEnd := 0;
IdHTTP.Request.ContentRangeStart := 0;
idhttp.Request.ContentType := ‘application/x-www-form-urlencoded‘;
idhttp.Request.CharSet := ‘utf-8‘;
IdHTTP.Request.Accept := ‘*/*‘;
IdHTTP.Request.BasicAuthentication := False;
IdHTTP.Request.UserAgent := ‘Mozilla/3.0 (compatible; Indy Library)‘;
IdHTTP.HTTPOptions := [hoForceEncodeParams];
RequestURL := ‘http://localhost:8080/userinfo/aaa.do‘;
ResponseStream := TStringStream.Create(‘‘, TEncoding.GetEncoding(65001));

IdHTTP.Get(RequestURL, ResponseStream);
IdHTTP.Free;
kkk:=ResponseStream.DataString;
ResponseStream.Position := 0;
LJsonArr := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(kkk),0) as TJSONArray;
for LJsonValue in LJsonArr do
begin
for LItem in TJSONArray(LJsonValue) do
begin
if TJSONPair(LItem).JsonString.Value=‘userNumber‘ then
begin
S :=Format(‘%s : %s‘,[TJSONPair(LItem).JsonString.Value, TJSONPair(LItem).JsonValue.Value]);
showmessage(s);
end;
end;
end;
Memo1.Text := ResponseStream.DataString;

JO.Free;
ResponseStream.Free;
end;

end.

时间: 2024-08-07 17:38:17

delphi解析json(解决乱码问题)的相关文章

xe5 delphi 解析 json

xe5 delphi 解析 json 2014-03-04 17:35:41|  分类: mobile |  标签:delphi  json  mobile  |举报 |字号大中小 订阅 最简单的JSON大致像这样 { "date":"周二(今天, 实时:12℃)", "dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png", "

我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai", articletype: "1&

Delphi XE6 原生解析json

Delphi XE5带了system.json单元,原生提供了json支持类.下面是解析json用法说明: 最简单的JSON大致像这样 { "date":"周二(今天, 实时:12℃)", "dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png", "nightPictureUrl":"http://api.m

Delphi用QJSON解析JSON格式的数据

本来用superobject来解析JSON已经够用了,可惜这个东东不能在移动段使用,于是找到QJSON来处理. 这是一个国内高手写开源免费的东西,赞一个. 加入数据如下: {"message":"ok","status":"1","state":"3","data": [{"time":"2012-07-07 13:35:14"

asp.net webservice 返回json数据乱码解决方法

[WebMethod] public void QueryRiskNotice(string phone) { try { var data = _riskNoticeDal.QueryRiskNotice(phone); var list = from da in data.AsEnumerable() select new { //通知单 编号 number = da.Field<string>("t_number"), //通知单 日期 date = da.Field

springmvc 提供的统一解决json中文乱码配置

<!--springmvc 统一解决json中文乱码问题--><mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value=&qu

Delphi用QJSON解析JSON格式的数据 【转】

本来用superobject来解析JSON已经够用了,可惜这个东东不能在移动端使用,于是找到QJSON来处理. 这是一个国内高手写开源免费的东西,赞一个. 假入数据如下: {"message":"ok","status":"1","state":"3","data":[{"time":"2012-07-07 13:35:14",

springMVC框架下JQuery传递并解析Json数据

json作为一种轻量级的数据交换格式,在前后台数据交换中占领着很重要的地位.Json的语法很简单,採用的是键值对表示形式.JSON 能够将 JavaScript 对象中表示的一组数据转换为字符串,然后就能够在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给server端程序,也能够从server端程序传递json格式的字符串给前端并由前端解释.这个字符串是符合json语法的,而json语法又是javascript语法的子集,所以javascript很easy解释

服务端提供的JSON数据接口与用户端接收解析JSON数据

首先来了解下JSON格式解析 json结构的格式就是若干个 键/值(key, value) 对的集合,该集合可以理解为字典(Dictionary),每个 键/值 对可以理解成一个对象(Object). 键/值 对中的 键(key) 一般是 一个string,值(value)可以是string.double.int等基本类型,也可以嵌套一个 键/值 对,也可以是一个数组,数组里面的数据的类型可以是基本类型,或者 键/值 对.可以看出 键/值 本来没什么,只是嵌套得多了就会觉得混乱,下面举个具体的例