C#如何使用Newtonsoft.Json修改添加JSON?

C#如何使用Newtonsoft.Json修改添加JSON?,第1张

JObject obj = new JObject(

new JProperty("aa", "111")

)

JObject obj2 = new JObject(

new JProperty("bb",

new JObject(new JProperty("cc", "33"))

) )

obj.Add(obj2)

Response.Write(obj.ToString())

程序执行

C#所开发的程序源代码并不是编译成能够直接在  *** 作系统上执行的 二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NET Framework的虚拟机——被称之为通用语言运行时( CLR)——执行。 所有的.Net编程语言都被编译成这种被称为 MSIL(Microsoft Intermediate Language )的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“. exe”的后缀名。但是实际上,如果计算机上没有安装.NetFramework,那么这些程序将不能够被执行。 在程序执行时,.Net Framework将中间 代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。

1.addJSONData和addRowData有点区别,后者是绑定在jquery对象的,前者是绑定在标签上的。

用addJSONData时举例:$("#table")[0].addJSONData(data)

用FF可以看到$("#table")[0]上绑定的事件的。

2.addJSONData接受的参数:

这是后台的.net代码

new JObject() {

new JProperty("total","1"),

new JProperty("page","1"),

new JProperty("records","3"),

new JProperty("rows",yourArrayData)

}

可以看到addJSONData接受的并不是一个数组,就是一个json对象,开始一直也困扰在这里。

前台返回的JSON:

{"total":"1","page":"1","records":"3","rows":[{"UserID":1,"UserName":"kp","Password":"123","Domain":null,"RoleID":null},{"UserID":2,"UserName":"kptest","Password":"Kp123","Domain":null,"RoleID":null},{"UserID":3,"UserName":"ricky","Password":"123","Domain":"XSUNT-SH\\dong.geng","RoleID":1}]}

3.还有一点需要注意的,jqgrid需要定义一个jsonReader其中的repeatitems如果不指定为false FF会返回obj is undefined

jsonReader: {

repeatitems: false,

rows: "rows",            

total: "total",

page: "page",

records: "records"

}

4.$("#table").addJSONData(data)的调用位置也值得注意,最后只有在loadComplete中才能加载出数据,gridComplete里不可以,方法外也不行。

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

}

写在最后:

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

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存