給一個(gè)在線轉(zhuǎn)換網(wǎng)站:http://www.jsons.cn/jsontomodel/
關(guān)注我的GitHub:https://github.com/JackMin1314/Learning_Skill/
怎么將 類的對(duì)象換成json字符串 以及 json字符串轉(zhuǎn)換成類的對(duì)象
如何去定義相應(yīng)的類的對(duì)象,對(duì)于嵌套的json格式相應(yīng)的 類類型定義
-
json格式 簡(jiǎn)單認(rèn)識(shí)
json可以簡(jiǎn)單的理解為是一個(gè)鍵值對(duì)的形式,類似python中的字典格式,
{"key1":"value1","key2":"value2",...}
給定
key就可以得到相應(yīng)的value(value可能有多個(gè)類型) .
json格式允許嵌套使用. 通常是用字符串的形式存在.
-
對(duì)象怎么轉(zhuǎn)換成json格式
通常我們拿到的是一系列鍵值對(duì),需要json格式化(序列化為json形式)
我們?cè)趺吹玫竭@些鍵值對(duì)?可以用類的成員復(fù)制得到例如:
//為了給內(nèi)部數(shù)據(jù)logintime,number等賦值,這里創(chuàng)建類Positioninfo的對(duì)象test
Positioninfo test = new Positioninfo();
test.logintime = "2019-07-16";
test.number = "177**";
test.token = "abcd123";</pre> -
json可以轉(zhuǎn)換成的 對(duì)象 有哪些
這里的類的對(duì)象,類含義可以是系統(tǒng)原有的類,也可以是自定義的類類型,但是要注意json轉(zhuǎn)換的應(yīng)該是類的對(duì)象,不是類本身!
json本身就可當(dāng)做字符串進(jìn)行處理,但是一般不推薦,不如轉(zhuǎn)換成C#對(duì)象簡(jiǎn)單易于理解.
為了實(shí)際需要通常創(chuàng)建的是自定義的類的對(duì)象,相應(yīng)的key看成類的成員變量,依據(jù)實(shí)際需要還會(huì)有成員函數(shù)存在,這些都是允許的.
-
嵌套的json怎么定義需轉(zhuǎn)換的類,并創(chuàng)建類的對(duì)象
由2可知如何創(chuàng)建相應(yīng)的對(duì)象
對(duì)于嵌套的json例如
{
"status": "200",
"msg": "成功",
"data": {
"lng": "119.29925",
"lat": "32.16172"
}
}如何去定義轉(zhuǎn)換的對(duì)象的類呢?(類可以嵌套定義??)
public class Data
{
private string mylng;
private string mylat;
public string lng
{
get { return mylng; }
set { mylng = value; }
}
public string lat
{
get { return mylat; }
set { mylat = value; }
}
?
}
/// <summary>
/// Json字符串生成C#實(shí)體類
/// </summary>
public class Response
{
private string mystatus;
private string mymsg;
private Data mydata;//注意這塊聲明前面定義內(nèi)層的類的對(duì)象
public string status
{
get { return mystatus; }
set { mystatus = value; }
}
public string msg
{
get { return mymsg; }
set { mymsg = value; }
}
/// <summary>
/// 這里定義在Response類里面,類可以嵌套
/// 嵌套的實(shí)體類.見http://www.jsons.cn/jsontomodel/在線轉(zhuǎn)換
/// </summary>
public Data data
{
get { return mydata; }
set { mydata = value; }
}
?
}為了進(jìn)行嵌套,需要先定義內(nèi)層的類類型public class Data{....}(因?yàn)楹竺嬉?先在前面定義);
然后定義最外層類類型public class Response{......public Data data{get;set;}} ,最后創(chuàng)建public List<Response> JsonToObject(string jsonString){...}方法. List<Response>是List集合里面是Response類的對(duì)象.
public List<Response> JsonToObject(string jsonString)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Response>));
jsonString = "[" + jsonString + "]";
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
object ob = serializer.ReadObject(stream);
List<Response> Ls = (List<Response>)ob;
return Ls;
}
部分using根據(jù)提示添加即可