Javascript JSON的怪异需要更优雅的方法

Javascript JSON的怪异需要更优雅的方法,javascript,json,Javascript,Json,基本上,我正在处理一个包含四种不同JSON“thingies”(对象、数组)的页面。请原谅我缺乏恰当的术语 当我得到JSON时,它作为一个包含一堆子对象的对象出现,每个“子对象”如下所示: "token":"government", "title":"Government", "isSelected":false, "type":"CATEGORY", "subtype":"INDUSTRY", "count":12 因此,第一个任务是循环遍历每个JSON并填充一个充满复选框的框,使用titl

基本上,我正在处理一个包含四种不同JSON“thingies”(对象、数组)的页面。请原谅我缺乏恰当的术语

当我得到JSON时,它作为一个包含一堆子对象的对象出现,每个“子对象”如下所示:

"token":"government",
"title":"Government",
"isSelected":false,
"type":"CATEGORY",
"subtype":"INDUSTRY",
"count":12
因此,第一个任务是循环遍历每个JSON并填充一个充满复选框的框,使用
title
作为标签,使用
isSelected
指示选中状态。到目前为止,一切顺利

顺便说一句,在某个地方,我拿起了一个JS脚本,它检查一个对象是JSON还是数组,根据那个“快速脏”测试,我的对象是数组。或者一个数组对象(你知道,一个是用
[]
创建的,另一个是用
{}
创建的)

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

for(var i = 0; i < $array.length; i++){
    $array[z].isSelected = true;
}
for(变量i=0;i<$array.length;i++){
$array[z].isSelected=true;
}
当我处理所有这些问题时,也许我起得太晚了,但是使用相同的方法,我可以更改
$array[z]。当取消选中复选框时,我将
选为

最后,我将JSON“thingy”转换为字符串,搜索并替换相应的值,然后将字符串转换回对象。现在一切都正常了,但我觉得好像我刚刚用光了一卷胶带,本来可以把这些碎片很好地拼合在一起

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


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

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

创建对象的一种方法是

var myObject = {
    "myName": "AName",
    "myType": "AType"
};
此对象可以引用为
myObject
,其属性
myObject.myName
myObject.myType
包含值
AName
AType

您应该能够通过名称将对象引用为
objName.token
objName.title

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

下面这些的嵌套可以引用为
myObject.moreProperties.prop1

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

在for循环中使用i作为索引,但使用z访问数组元素。如果你剪切并粘贴代码,这就是你的问题所在。如果你知道它是一个对象数组,为什么你一直称它为
东西
?这是你想要做的吗?