导航:首页 > 编程语言 > web端怎么解析json

web端怎么解析json

发布时间:2023-09-01 06:18:29

A. C#怎么从http上返回jsON数据并读取

我之前做过网络和桌面应用的数据对接,你看看
/*
1、对象集合
*/
[DataContract]
publicclassItems
{
[DataMember]
publicList<ddd>ddd{get;set;}
publicItems()
{
ddd=newList<ddd>();
}

//把字符串转换为对象
publicstaticItemsFormJson(stringjson)
{
try
{
System.Runtime.Serialization.Json.DataContractJsonSerializera=newSystem.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Items));
using(MemoryStreamstream=newMemoryStream(Encoding.Unicode.GetBytes(json)))
{
return(Items)a.ReadObject(stream);
}
}
catch(Exception)
{

returnnull;
}
}
}
/*
简单的对象
*/
[DataContract]
publicclassddd
{
[DataMember]
publicintcid{get;set;}
[DataMember]
publicintpid{get;set;}
[DataMember]
publicintoid{get;set;}
[DataMember]
publicstringview_type{get;set;}
[DataMember]
publicstringstatus{get;set;}
[DataMember]
publicstringname{get;set;}
[DataMember]
publicstringeng_name{get;set;}
[DataMember]
publicstringctpl{get;set;}
[DataMember]
publicstringurl{get;set;}
}


/*
2、从HTTP请求中得到数据
*/

HttpWebRequestrequest=(HttpWebRequest)HttpWebRequest.Create("http://www.bursonchurch.net//index.php?Interface-index-keyt-123-act-catelist.html");
request.Timeout=5000;
request.Method="GET";
HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();
Console.WriteLine("内容类型:"+response.ContentType);
Console.WriteLine("内容长度:"+response.ContentLength);
Console.WriteLine("服务器名:"+response.Server);
Console.WriteLine("资源的URI:"+response.ResponseUri);
Console.WriteLine("HTTP协议版本:"+response.ProtocolVersion);
Console.WriteLine("相应状态:"+response.StatusCode);
Console.WriteLine("相应方法:"+response.Method);
//头信息
for(inti=0;i<response.Headers.Count;++i)
{
Console.WriteLine(" HeaderName:{0},----------Value:{1}",response.Headers.Keys[i],response.Headers[i]);
}

StreamReadersr=newStreamReader(response.GetResponseStream());
stringjsonstr=sr.ReadToEnd();

//例子:假设得到的json数据下面序列化为对象
stringtest="{"ddd":[{"cid":"1","pid":"0","oid":"0","view_type":"0","status":"1","name":"西科推荐","eng_name":"","ctpl":"","ctitle":"","ckeywords":"","cdescription":"","url":"http:\/\/www.bursonchurch.net\/index.php?Cate-index-cid-1.html"},{"cid":"2","pid":"0","oid":"2","view_type":"0","status":"1","name":"校园活动","eng_name":"","ctpl":"","ctitle":"","ckeywords":"","cdescription":"","url":"http:\/\/www.bursonchurch.net\/index.php?Cate-index-cid-2.html"},{"cid":"3","pid":"0","oid":"2","view_type":"0","status":"1","name":"帅哥","eng_name":"","ctpl":"","ctitle":"","ckeywords":"动物世界keword","cdescription":"动物世界s","url":"http:\/\/www.bursonchurch.net\/index.php?Cate-index-cid-3.html"},{"cid":"4","pid":"0","oid":"4","view_type":"1","status":"1","name":"静物","eng_name":"","ctpl":"","ctitle":"","ckeywords":"","cdescription":"","url":"http:\/\/www.bursonchurch.net\/index.php?Cate-index-cid-4.html"},{"cid":"5","pid":"0","oid":"5","view_type":"1","status":"1","name":"美女","eng_name":"","ctpl":"","ctitle":"","ckeywords":"","cdescription":"","url":"http:\/\/www.bursonchurch.net\/index.php?Cate-index-cid-5.html"}]}";

//第一种转
javaScriptSerializerj=newJavaScriptSerializer();
Itemsii=newItems();
ii=j.Deserialize<Items>(jsonstr);


//第二种也行
Itemsit=Items.FormJson(jsonstr);

response.Close();
Console.ReadKey();

B. c#解析JSON的几种办法

对比





C. 在 java web开发中怎么使用json

一、JSON建构有两种结构:

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。在Java中就是一种Map结构。

2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。在Java中是一种list结构。

经过对象、数组2种结构就可以组合成复杂的数据结构了。

二、Json in Javascript

使用Json语法创建对象

var people = {"name":"jack","sex":"mail"};

可以通过这种语法创建json对象,用“{}”括起来,用“,”隔开key:value

使用Json语法创建数组

var arr =[value1,value2...];

一个包含多个people的数组 peoples = [{"name":"jack","sex":"mail"},

"name":"lily","sex":"femail"};

Json数组可以通过这种语法创建,用"[]"括起来,数组元素之间用“,”分隔开,下面是这种语法的示意图:

在使用Json格式字符串与服务器交互时候,可以利用Json扩展的方法将字符串转换成一个JavaScript对象,或者将一个对象转换成Json格式字符串。不过先要登录http://www.json.org下载Json2.js文件。引入该包后,js对象直接用toJSONString()装换为字符串格式,字符串可以用parseJSON()转换成js对象。

访问数据

只需用点号表示法来表示数组元素。所以,要想访问 上面peoples列表的第一个条目的名字,只需在 JavaScript 中使用下面这样的代码

peoples[0].name

利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。

修改数据

正如可以用点号和方括号访问数据,也可以按照同样的方式轻松地修改数据:

peoples[0].name = "Rachmaninov";

在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。

D. webservice接口开发,我客户端,服务端返给我的字符串里有4层,有json和json组成的数组,我该怎么打开解析

你可以这样!!Java的Servlet里面的response有个Writer是专门向向前台写东西的。也可以写Object。然后你可以观察下JSON的规则:
1.有一种是这样的:
{'3','54','54'}这是最简单的一种JSON
你可以观察到,这种写法和数组的写法还有List转换成toString后的写法是一模一样的,所以当你需要向前台传送一个列表的时候,就可以使用Writer.write(list)这种写法,然后前台使用Ajax接收下就可以了。
2.有一种是这样的:
{name:"ewhq",password:"dashk"}
你可以观察到,这种写法和Java里面的map转换成toString后的写法是一模一样的,那么你需要传输这样的格式的时候,就直接writer.write(map),就可以了,toString也不需要写,会帮你自动转换的。
一般来说,两种格式都是会结合起来的,当你需要传输一个表格的内容时:那么假设内容是这样
username password
________________
name1 pass1
name2 pass2
这样,你使用两个map来存储这两条数据
然后再使用List把两个Map加入进去,这个时候,数据就变成了
{{username:"name1",password:'pass2'},{username:"name2",password:"pass2"}}
然后,既然你做过XML的,那么后面就应该懂得怎么做了吧!

E. vs2012的asp.net怎么解析json

asp.net解析json(反序列化)的常用方法:
在.Net framework 3.5之后有了System.Runtime.Serialization.Json命名空间,利用这个命名空间可以方便的序列化反序列化json数据。
1、序列化Person类,如下代码定义:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;

namespace WebApplication1
{
[Serializable]
[DataContract]
public class Person
{
[DataMember(Order=1,Name="id")]
public int ID { get; set; }

[DataMember(Order=2,Name="name")]
public String Name { get; set; }
}
}

注意:需要做json序列化的属性必须设置DataMember的属性,可以指定Order和Name,分别表示顺序号和属性序列化时的名称。
2、DataContractJsonSerializer类提供了WriteObject(Stream,Object)和ReadObject(Object)两个方法来做json的序列化和反序列化。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Text;

namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Person person = new Person { ID = 1,Name="OutOfMemory.CN" };
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Person));

//序列化json对象
using (var ms = new MemoryStream())
{
jsonSerializer.WriteObject(ms, person);
String json = Encoding.UTF8.GetString(ms.ToArray());

literalJson.Text = json;
}

//解析json对象(也叫反序列化)
var jsonText = @"{""id"":2,""name"":""OutOfMemory.CN""}";
using (var ms = new MemoryStream())
{
var buffer = Encoding.UTF8.GetBytes(jsonText);
ms.Write(buffer, 0, buffer.Length);
ms.Seek(0, SeekOrigin.Begin);
var objPerson = (Person)jsonSerializer.ReadObject(ms);
literalPersonInfo.Text = string.Format("person id == {0},person name = {1}", objPerson.ID, objPerson.Name);
}
}
}
}

F. 如何解析从webservice返回的json

如何解析从webservice返回的json。
解析json我个人选择sbjson库。还有其他的如touchJSon和YAJL等选择,您可以自行下载决定(用哪个)。
让我们来对什么是json以及如何用他做一点简单的描述。

wikiw上说:
json(javascript Object Notation 的缩写)是一个基于文本的,人类可读的,开放标准的轻量级数据交换格式。它继承了javascript中的简单数据结构和相关数组对象,称为对象。不管它 和javascript的瓜葛,json是语言独立的,几乎所有编程语言都能解析它。

json以键值对来表示数据。每个值被一个键名字引用(键名字是个string)。如果你想以json表示人名,他们的名字将被"name"键引用,如下:
“name” : “James”
所以json用一种容易被应用程序传递的方式表现数据,非常完美。
所以当从webservice解析数据时,你要做的第一件事就是搞清楚你的模型。下面我们会分析webservice的响应数据,搞清楚哪些bit代表对象,对象数组,对象所属的字段,等等。
但是json可以表示哪些类型的数据呢?
1.对象是大括号内的所有东东
2.字符串用双引号
3.数字只是简单的显示,如 12345
4. 数组由中括号包围
5.布尔值从'true'和'false'获得,没有引号
6.null值由'null'表示,没有引号

下面的例子使用了所有这些数据类型:(显然并没有bool和null类型--译者按)
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{ "type": "home", "number": "212 555-1234"},
{ "type": "fax", "number": "646 555-4567"}
]
}

以上数据的objective-c表示为:
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *firstName;
NSString *lastName;
NSInteger age;
NSDictionary *address;
NSArray *phoneNumbers;
}
@end

你会认为我们漏掉了一些信息,比如地址的详情,以及电话号码。怎么建立你的对象模型是你决定的事情。
我选择了用字典保存地址详情,每个值用一个key名字引用,就像在json中一样。电话号码也保存在字典里,但是这些字典是放到数组中的。

如果你希望,你可以创建一个名为Adress的类,用它来保存地址详情。这会变得更像面向对象的方式,如果在app的其他地方还要用到address,并且不必绑定到person上的话会很有用。

一旦你有了自己的对象模型,你需要从json中得到数据并创建模型的实例。

sbjson有一个有用的sbjsonparser类,可以在一行内搞定整个json串的解析:

SBJsonParser *jsonParser = [[SBJsonParser alloc] init];
NSError *error = nil;
NSArray *jsonObjects = [jsonParser objectWithString:jsonString error:&error];
[jsonParser release], jsonParser = nil;

sbjson将json作为objective-c的字典来处理。对于不同的webservice,你可能得到一个顶级的json对象或者一个数组。因 此,objectWithString:error:有一个id类型返回值。你可以使用objective-c的动态特性来决定解析返回时采用何种数据来 接收,如下:

id jsonObject = [jsonParser objectWithString:jsonString error:&error];
if ([jsonObject isKindOfClass:[NSDictionary class]]) // treat as a dictionary, or reassign to a dictionary ivar else if ([jsonObject isKindOfClass:[NSArray class]]) // treat as an array or reassign to an array ivar.

如果webservice永远只返回两种顶层表现的一种,你大可以继续并假设它会是一个数组或字典,而不必担心检查(类型)。

现在你得到了以你可以通过objcetive-c管理的格式来表示json数据。你所要做的就是遍历数组/字典的内容,并创建person对象来表示他们。

一件值得记住的事情是,遍历如年龄这种数字将被包裹在NSNumber对象中,所以我们需要对其调用'intValue'来得到数字。

NSMutableArrary *people = [NSMutableArray array];
for (NSDictionary *dict in jsonObjects)
{
Person *newPerson = [[[Person alloc] init] autorelease];
[newPerson setFirstName:[dict objectForKey:@"firstName"]];
[newPerson setLastName:[dict objectForKey:@"lastName"]];
[newPerson setAge:[[dict objectForKey:@"age"] intValue]];
[newPerson setAddress:[dict objectForKey:@"address"]];
[newPerson setPhoneNumbers:[dict objectForKey:@"phoneNumber"]];
[people addObject:newPerson];
}

最终我们完成了。

阅读全文

与web端怎么解析json相关的资料

热点内容
90版本升级不送 浏览:186
工具箱英文 浏览:382
南翔嘉定编程课哪里好 浏览:853
win10改变文件格式 浏览:475
linux中的物理地址和虚拟地址 浏览:493
有哪些app可以接游戏订单 浏览:472
苹果硬盘数据恢复要多少钱 浏览:394
js绑定下拉框数据库数据 浏览:448
cad文件怎么复制到另一个文件里边 浏览:858
dxp钻孔文件 浏览:631
iphone大悦城换机 浏览:538
找结婚对象上什么网站 浏览:974
学生信息管理系统程序设计报告 浏览:640
微信文件怎么删除怎么恢复 浏览:407
编程程序怎么复制 浏览:467
文件更改 浏览:327
冰点文件路径 浏览:730
软件一点开文件就关闭 浏览:88
网络如何把人捧红 浏览:961
软件传输文件 浏览:184

友情链接