JSON数据格式解析(面向对象概念的体现)

来源:互联网 发布:淘宝网怎么收藏宝贝 编辑:程序博客网 时间:2024/06/05 08:56

突然发现好久没更新文章了,一时兴起来讲讲json数据格式,主要是针对新手而言,不喜勿喷。

其实网上针对于json的讲解太多了,那我为什么还要来讲这个东西,是因为我发现很多初学的朋友,他们对于json数据无法抽象出实体来,而网上很多资料又仅仅只是讲了如何解析。这其实是很不利于初学者的学习。

那么我们废话不多说,直接开干奋斗奋斗奋斗......

对于Json的定义,我这边就不阐述了,如果说有读者朋友都不知道什么是json数据的话,我的建议是先暂停本篇的阅读,先去了解什么是json数据后再来看。

笔者这边会使用c#这么一门面向对象的语言对json进行解析,也主要是帮助初学的朋友做到看一眼json字符串在代码上就能知道应该抽象出哪几个类,类中的属性又该有哪些。这一点我发觉在初学的朋友身上很难做到,特别是对于那些连面向对象基本概念都没形成的朋友而言就更难了


首先我们先来看下Json的结构,

Json数据结构分为两种:一种是对象,一种是数组

下边直接先上一个对象结构式的Json数据:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

这种格式想必很多朋友都有见到过,那么既然这是一个对象,那么我们就很容易能联想到类对象,然而,有对象之前肯定得要有这个类的抽象模型存在,也就是类,那么在.net平台中我们就可以很容易的使用c#语言抽象出一个类了

public class People{public string firstName{get;set;}public string lastName{get;set;}public string email{get;set;}}



那么我们最终就可以通过“某种途径”将上述json数据在代码中转变为一个类模型出来了,最终可以通过该类对象得到firstName,lastName和emil的值了。至于某种途径,读者就可以自行百度了,太多太多了微笑

趁热打铁,接着我们再上一个数组结构式的Json数据

{ "authors": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

]}

貌似很复杂,其实一分析就是3个People类对象而言,那么我们能否写一个类里边就包含了3个类People的类对象,

如下:

public class Authors
{
public People people1{get;set;}


public People people2{get;set;}


public People people3{get;set;}
}

那有的朋友是否会想,假如有10条记录或者上百条记录岂不是要定义10个或者上百个属性,这样太可怕了,所以,当我们使用上述的“某些途径”在代码中解析该json数据的时候,想要正确的解析,我们的类就不能这样定义,我们必须写成集合的形式,这里我们使用列表把它装载起来。

public class Authors
{
public List<People> authors{get;set;}
}


OK,到这里几乎是本篇的结尾了, 那么至于嵌套的写法我这边

突然有个小灵感, 我们反着来:不知道有的读者是不是会想如果Authors类中除了authors字段还有别的字段,那么怎么在json字符中显示呢?比如说:


public class XXX
{
public List<People> authors{get;set;} //作者对象列表
public string country{get;set;}  //属于哪个国家
public bool isUSA{get;set;}  //是否属于美国
public List<People> musicer{get;set;} //音乐家对象列表
}


其实,也很容易,XXX是个类那么对应这json字符串就有{ }一对括号了,authors是个集合,那么也就是

{

    "authors":

 ]

 } 

这样的结构了,country是个string值,isUSA是个bool值
那么又有以下的结构:

{

    "authors":

 ],

"country":"xxx",

"isUSA":false,

 } 

最后,是一个musicer集合,所以,在加上一个musicer集合

{

    "authors":

 ],

"country":"xxx",

"isUSA":false,

"musicer":

[

]

 } 


那么最后的最后,我们我们补全authors和musicer内部

{ "authors": [{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }],"country":"China","isUSA":false,"musicer":[{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }]}


好了,时间也不早了,文章也到尾声了。希望对初学的朋友能有所帮助

写文不易,转载请注明出处。

欢迎拍砖,狠狠的拍QQ:2306798290

继续流浪去远方......