C# 用Newtonsoft.Json 修改 添加 JSON

C# 用Newtonsoft.Json 修改 添加 JSON,第1张

1.首先需要写三个类,这个类和json中对象的数据结构应该是对应的,这里的例子可能忽略了部分属性和数据类型,仅供参考:

//Json数据的对象结构

public class MyJson

{

public List<MyTreeNodeBean>beanList

}

//树形结构中的对象结构

public class MyBean

{

public string id

public string title

public string note

public MyImage image

public string maxid

public string fold

public string putright

public List<MyTreeNodeBean>children

public MyBean()

{

}

}

//对象里面Image的结构

public class MyImage

{

public string url

public string border

public string height

public string width

}

2.因为json是树形结构的数据,所以需要递归遍历去寻找对应ID的对象

//这个类负责按照ID寻找对象

public class MyHelper

{

//FindById函数的重载函数,用来第一次调用

public static MyBean FindById(string id, string jsonString)

{

return FindById(id, jsonString, null)

}

//FindById递归寻找函数

public static MyBean FindById(string id, string jsonString, List<MyBean>beanList)

{

if (beanList == null) {

//第一次调用的时候,寻找的列表是最高层的根底下的对象列表

//将json数据转换成C#对应类型(用了Newtonsoft.Json)

MyJson json = JavaScriptConvert.DeserializeObject<MyJson>(jsonString)

beanList = json.beanList

}

//遍历对象列表,寻找对应ID的对象

MyBean returnBean = null

foreach (MyBean bean in beanList) {

if (bean.id == id) {

//找到了

returnBean = bean

} else {

//递归寻找:

//如果不是,就寻找此对象的children列表

returnBean = FindById(id, jsonString, bean.children)

}

//如果找到,就跳出寻找

if (returnBean != null) {

break

}

}

return returnBean

}

}

3.使用实例:

//假设json的字符串在变量jsonString中

MyBean bean = MyHelper.FindById("33", jsonString)

if (bean != null) {

//使用查找出来的bean

}

写在最后:

以上代码仅供参考,没有经过编译测试、有可能存在书写错误。但是逻辑清晰、没有任何冗余内容。请楼主阅读以后自己在理解的基础上进行修改、改进再使用。

另外楼主如果想给分就请直接给,请不要马马虎虎把大家的回答投票,比较反感,最后祝你早日搞定这个问题~~~

1、使用原生的解析:

String json = "..."

JSONArray array= new JSONArray(json)

//遍历数组里的值,得到每个独立的对象,然后获取对应的值设置到声明好的对象中,最终创建对象完成后添加到集合中,如我自己代码里的片段:

for (int j = 0j <array.length()j++) {

obj = array.getJSONObject(j)

Data data = new Data()

data.setThumbnail(obj.getString("thumbnail"))

data.setTitle(obj.getString("title"))

data.setUrl(obj.getString("url"))

mDataList.add(data)

}

2、使用第三方包如Gson,但是这个你得保证你的JSON字符串个z

JSON(JavaScript

Object

Notation

)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,JSON是JavaScript原生数据格式。

下面给大家介绍js数组添加json数据的两种方式。

//

第一种方式

personInfo

:

[],

for(var

i

=

0

i

<

_STAGE.passengerInfoArray.length

i++){

var

name

=

_STAGE.passengerInfoArray[i]

var

person

=

{v:name,

text:name}

this.personInfo.push(person)

}

//

第二种方式

var

passengerInfo

=

{}

passengerInfo.psgTypeDesc

=

psgTypeDesc

passengerInfo.flightPrice

=

flightPrice

_STAGE.passengerInfoArray.push(passengerInfo)

js数组与

json

的区别

一,数组

1.

定义一维数组:var

s1=new

Array()

s1=[1,2,3,4]或者s1[0]=1,s1[1]=2,s1[3]=3,s1[4]=4

alert(s1[0])

结果为1;

2,,定义二维素组:var

s1=new

Array()

var

s1=[[3,1],[2,3,4],3,[4,5,6,7,8]]

alert(s1[1][0])

结果为2;

二,定义json对象

1,json对象

var

status_process

=

{

"

name5"

:

'闲置期',

"name1"

:

'播种期',

"name2"

:

'苗期',

"name3"

:

'生长期',

"name4"

:

'采收期'

}

alert(status_process)

结果为:Object:Object

2,json字符串

所谓json字符串,是指该字符串变量的值与json的格式相同,但是不是json对象,比如:

var

s1="{"

var

s2

=

"

'name5'

:

'闲置期',

'name1'

:

'播种期','name2'

:

'苗期','name3'

:

'生长期','name4'

:

'采收期'"

var

s3="}"

var

status_process=s1+s2

+s3;

虽然status_process的值符合json对象的格式,但是它不是对象,只是一个字符串(是拼凑出来的);

将字符串转换为json对象使用函数eval,eval("("

+

status_process+

")");

结论:从后台传入到前台的是json字符串,不是真正的json对象,因此需要使用eval函数转换。

3,json对象的使用

var

status_process

=

{

name5

:

'闲置期',

name1

:

'播种期',

name2

:

'苗期',

name3

:

'生长期',

name4

:

'采收期'

}

alert(status_process["name5"])

alert(status_process.name5)

两个都为:闲置期

4,json二维对象

var

status_process

=

{

name5

:

{name3:'空闲闲置期'},

name1

:

'播种期',

name2

:

'苗期',

name3

:

'生长期',

name4

:

'采收期'

}

alert(status_process["name5"]["name3"])

alert(status_process.name5.name3)

结果都为:'空闲闲置期'


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11303948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存