C# 用Newtonsoft.Json 修改 添加 JSON

如题比如现有一个JSON了。。现在需要操作这个JSON比如修改或添加新的键。比如有{"aa":"111"}现想添加{"bb":{"cc":"333"}}这样的JSON到老... 如题 比如 现有一个JSON了。。现在需要操作这个JSON比如 修改或添加新的键。
比如有 {"aa":"111"}
现想添加 {"bb":{"cc":"333"}}
这样的JSON到老的json里。
结果是 {"aa":"111","bb":{"cc":"333"}}
展开
 我来答
手机用户56871
2011-03-05 · TA获得超过618个赞
知道答主
回答量:178
采纳率:0%
帮助的人:129万
展开全部
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
}

写在最后:
以上代码仅供参考,没有经过编译测试、有可能存在书写错误。但是逻辑清晰、没有任何冗余内容。请楼主阅读以后自己在理解的基础上进行修改、改进再使用。
另外楼主如果想给分就请直接给,请不要马马虎虎把大家的回答投票,比较反感,最后祝你早日搞定这个问题~~~
武学阳阳
高粉答主

2018-04-17 · 醉心答题,欢迎关注
知道大有可为答主
回答量:160
采纳率:100%
帮助的人:19.3万
展开全部

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程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhan_xp
2011-03-03 · TA获得超过188个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:185万
展开全部
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());
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式