導航:首頁 > 編程語言 > 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相關的資料

熱點內容
文件包下載的安裝包在哪裡 瀏覽:811
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

友情鏈接