JSON古怪需要更优雅的方法

时间:2011-09-23 02:42:48

标签: javascript json

基本上,我正在开发一个包含四个不同JSON“thingies”(objetcs,数组)的页面。原谅我缺乏适当的术语。

当我获得JSON时,它作为一个带有一堆子对象的对象进入,每个“子对象”看起来像这样:

"token":"government",
"title":"Government",
"isSelected":false,
"type":"CATEGORY",
"subtype":"INDUSTRY",
"count":12

因此,第一项任务是循环遍历每个JSON并使用title作为标签填充一个装满复选框的框,并使用isSelected指示已检查状态。到目前为止,非常好。

顺便说一句,顺便提一下,我选择了一个JS脚本来检查一个对象是JSON还是一个数组,根据那个“快速和肮脏”的测试,我的对象是一个数组。或者一个数组对象(你知道,那个是用[ ]创建的,另一个用{ }创建的)?

无论如何,当最终用户检查并取消选中复选框时,我需要跟踪所有内容并立即将更改发送回服务器(当用户单击DONE按钮时)。疯狂的是,通过循环遍历对象,我能够将isSelected值更改为true。 。 。只是不回false

for(var i = 0; i < $array.length; i++){
    $array[z].isSelected = true;
}

当我处理所有这些时,也许我太迟了,但是使用相同的方法,当复选框得到de时,我可以$array[z].isSelected更改为false - 请选择。

最后,我将JSON“thingy”转换为字符串,搜索并替换相应的值,然后将字符串转换回对象。这一切现在都在运作,但我觉得好像我刚用完一卷胶带就可以通过将各个部分拼凑在一起而放在一起。

问题:我是否完全错过了这条船,是否有一种简单的方法可以更改JSON对象的值?

如果是这样,你能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

JSON thingy只是javascript对象的字符串表示。

创建对象的一种方法是

var myObject = {
    "myName": "AName",
    "myType": "AType"
};

此对象可引用为myObject,其中属性myObject.myNamemyObject.myType包含值ANameAType

您应该只能通过名称objName.token objName.title等引用对象。

如果您在尝试使用javascript解析json时遇到问题,请参考上面的结果。这样可以使您更容易访问,操作或删除对象属性中的数据。

如下所示嵌套可以引用为myObject.moreProperties.prop1

var myObject = {
    "myName": "AName",
    "myType": "AType",
    "moreProperties": {
        "prop1": "vaue1",
        "prop2": "vaue2",
    }
};