json对象如何动态添加属性

json对象如何动态添加属性,第1张

1、遍历 json 对象属性

//定义json对象 var person= { name: 'zhangsan', pass: '123', fn: function(){ alert(this.name+"的密码="+this.pass)} } //遍历person属性包括方法,如果不想显示出方法,可用typeof(person[item])== "function"来判断 for(var item in person){ alert("person中"+item+"的值="+person[item]) }

2、动态为 json对象 添加属性

需要 使用1中的 person对象

var copyPerson={} //创建copyPerson对象,将person中的属性包括方法copy给该对象 for(var item in person){ copyPerson[item]= person[item] //这样循环就可以将person中的属性包括方法copy到copyPerson中了 } for(var item in copyPerson){ alert("copyPerson中"+item+"的值="+person[item]) }

注意:使用 Ext.apply(copyPerson, person) 也可以 将person中的所有属性包括方法 copy到 copyPerson中

3、遍历 普通js对象的 属性

//定义一个普通的js类,包含方法 var p= function (){ this.name= '李四' this.pass= '456' this.fn= function(){alert(this.name+"的密码="+this.pass) } } var pp= new p() //生成一个p类的对象 pp for(var item in pp){ //遍历pp对象中的属性,只显示出 非函数的 属性,注意不能 遍历 p这个类 if(typeof(pp[item])== "function")continue alert("p对象中"+item+"的属性="+pp[item]) }

普通的 js对象 也可以copy,copy方法和 2.动态为 json对象 添加属性 思路一样。

启动vs2012,新建winform—C#工程。在解决方案管理器中,鼠标右击打开NuGet程序包管理器。

在NuGet程序包管理器中在线搜索“json”,选择JSon.Net,并安装。

如果在解决方案管理器中的引用项中出现NewtonSoft.Json后表示安装成功。

然后,双击窗体,添加代码

JObject obj = JObject.Parse("{\"h\":\"Hello world!!!\"}")

MessageBox.Show((string)obj["h"] )

点击调试运行,查看结果,出现”Hello World!!!“后表示我们使用Json的方法正确

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/11668053.html

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

发表评论

登录后才能评论

评论列表(0条)

保存