C# 用Newtonsoft.Json 修改 添加 JSON如题 比如 现有一个JSON了.现在需要操作这个JSON比如 修改或添加新的键.比如有 {"aa":"111"}现想添加 {"bb":{"cc":"333"}}这样的JSON到老的json里.结果是 {"aa":"111","bb":{
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 03:54:43
![C# 用Newtonsoft.Json 修改 添加 JSON如题 比如 现有一个JSON了.现在需要操作这个JSON比如 修改或添加新的键.比如有 {](/uploads/image/z/8728509-21-9.jpg?t=C%23+%E7%94%A8Newtonsoft.Json+%E4%BF%AE%E6%94%B9+%E6%B7%BB%E5%8A%A0+JSON%E5%A6%82%E9%A2%98++%E6%AF%94%E5%A6%82++%E7%8E%B0%E6%9C%89%E4%B8%80%E4%B8%AAJSON%E4%BA%86.%E7%8E%B0%E5%9C%A8%E9%9C%80%E8%A6%81%E6%93%8D%E4%BD%9C%E8%BF%99%E4%B8%AAJSON%E6%AF%94%E5%A6%82+%E4%BF%AE%E6%94%B9%E6%88%96%E6%B7%BB%E5%8A%A0%E6%96%B0%E7%9A%84%E9%94%AE.%E6%AF%94%E5%A6%82%E6%9C%89+%7B%22aa%22%3A%22111%22%7D%E7%8E%B0%E6%83%B3%E6%B7%BB%E5%8A%A0++%7B%22bb%22%3A%7B%22cc%22%3A%22333%22%7D%7D%E8%BF%99%E6%A0%B7%E7%9A%84JSON%E5%88%B0%E8%80%81%E7%9A%84json%E9%87%8C.%E7%BB%93%E6%9E%9C%E6%98%AF++%7B%22aa%22%3A%22111%22%2C%22bb%22%3A%7B)
C# 用Newtonsoft.Json 修改 添加 JSON如题 比如 现有一个JSON了.现在需要操作这个JSON比如 修改或添加新的键.比如有 {"aa":"111"}现想添加 {"bb":{"cc":"333"}}这样的JSON到老的json里.结果是 {"aa":"111","bb":{
C# 用Newtonsoft.Json 修改 添加 JSON
如题 比如 现有一个JSON了.现在需要操作这个JSON比如 修改或添加新的键.
比如有 {"aa":"111"}
现想添加 {"bb":{"cc":"333"}}
这样的JSON到老的json里.
结果是 {"aa":"111","bb":{"cc":"333"}}
C# 用Newtonsoft.Json 修改 添加 JSON如题 比如 现有一个JSON了.现在需要操作这个JSON比如 修改或添加新的键.比如有 {"aa":"111"}现想添加 {"bb":{"cc":"333"}}这样的JSON到老的json里.结果是 {"aa":"111","bb":{
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
}
写在最后:
以上代码仅供参考,没有经过编译测试、有可能存在书写错误.但是逻辑清晰、没有任何冗余内容.请楼主阅读以后自己在理解的基础上进行修改、改进再使用.
另外楼主如果想给分就请直接给,请不要马马虎虎把大家的回答投票,比较反感,最后祝你早日搞定这个问题~