如何在Javascript

时间:2015-06-10 11:14:58

标签: javascript json

我使用GUI创建页面,将其保存为JSON文件,然后由CMS读取JSON文件。

问题:我想修改我创建的对象,但代码超级最小化,我无法找到对象。

通过一个例子来说明一点。我用一个名为“BUTTON”的按钮创建了一个页面。它以这样的JSON导出:

"S":[  
     {  
        "Y":"h",
        "b":1,
        "nm":"BUTTON1",
        "f":"1,0,1,0",
        "c":"FFFFFF,000000",
        "l":"2020,1840,4140,8820",
        "n":"Helvetica",
        "h":192,
        "L":0,
        "i":0,
        "j":1,
        "vj":1,
        "t":"Button",
        "Act":[  
           {  
              "e":"OnClick",
              "s":"\r\ngraphicReplace(\"Public/essai/vue0\");"
           }
        ]
     }
 ]

它会在CMS中显示一个按钮。但是,如果我尝试“alert(S.t);”之类的东西,我会得到一个“ReferenceError:S未定义”。

我想做什么,找到一种说法: 找到我的对象,其中一个属性等于“Button”。给我起名字。

所以我可以使用JS改变它的位置,大小等等。

完整的JSON

{  
   "PG":{  
  "v":5,
  "h":20480,
  "w":25600,
  "pc":"FFFFFF",
  "de":"",
  "st":0,
  "Act":[  

  ],
  "S":[  
     {  
        "Y":"h",
        "b":1,
        "nm":"BUTTON1",
        "f":"1,0,1,0",
        "c":"FFFFFF,000000",
        "l":"2020,1840,4140,8820",
        "n":"Helvetica",
        "h":192,
        "L":0,
        "i":0,
        "j":1,
        "vj":1,
        "t":"Button",
        "Act":[  
           {  
              "e":"OnClick",
              "s":"\r\ngraphicReplace(\"Public/essai/vue0\");"
           }
        ]
     }
  ]

} }

2 个答案:

答案 0 :(得分:1)

您的JSON拥有数组,而数组又包含其余的。您可以在'S'键后看到括号[]跟随指示。

所以你(可能)需要使用..S[0].t

您可以通过索引访问数组,例如[0]和带有'名称的键,就像'.Act'一样。

从我看到它应该是json.PG.S[0].t其中json表示实际包含该JSON的变量的名称,



var json = {
  "PG": {
    "v": 5,
    "h": 20480,
    "w": 25600,
    "pc": "FFFFFF",
    "de": "",
    "st": 0,
    "Act": [

    ],
    "S": [{
      "Y": "h",
      "b": 1,
      "nm": "BUTTON1",
      "f": "1,0,1,0",
      "c": "FFFFFF,000000",
      "l": "2020,1840,4140,8820",
      "n": "Helvetica",
      "h": 192,
      "L": 0,
      "i": 0,
      "j": 1,
      "vj": 1,
      "t": "Button",
      "Act": [{
        "e": "OnClick",
        "s": "\r\ngraphicReplace(\"Public/essai/vue0\");"
      }]
    }]
  }
}


alert(json.PG.S[0].t);




例如假设:

var json = {  
   "PG":{  
  "v":5,
  "h":20480,
  "w":25600,
  "pc":"FFFFFF",
  "de":"",
  "st":0,
  "Act":[  

  ],
  "S":[  
     {  
        "Y":"h",
        "b":1,
        "nm":"BUTTON1",
        "f":"1,0,1,0",
        "c":"FFFFFF,000000",
        "l":"2020,1840,4140,8820",
        "n":"Helvetica",
        "h":192,
        "L":0,
        "i":0,
        "j":1,
        "vj":1,
        "t":"Button",
        "Act":[  
           {  
              "e":"OnClick",
              "s":"\r\ngraphicReplace(\"Public/essai/vue0\");"
           }
        ]
     }
  ]
} }

答案 1 :(得分:0)

Json应该像

var S = [
     {
         "Y": "h",
         "b": 1,
         "nm": "BUTTON1",
         "f": "1,0,1,0",
         "c": "FFFFFF,000000",
         "l": "2020,1840,4140,8820",
         "n": "Helvetica",
         "h": 192,
         "L": 0,
         "i": 0,
         "j": 1,
         "vj": 1,
         "t": "Button",
         "Act": [
            {
                "e": "OnClick",
                "s": "\r\ngraphicReplace(\"Public/essai/vue0\");"
            }
         ]
     }
]  

var obj = {
    "S": [
         {
             "Y": "h",
             "b": 1,
             "nm": "BUTTON1",
             "f": "1,0,1,0",
             "c": "FFFFFF,000000",
             "l": "2020,1840,4140,8820",
             "n": "Helvetica",
             "h": 192,
             "L": 0,
             "i": 0,
             "j": 1,
             "vj": 1,
             "t": "Button",
             "Act": [
                {
                    "e": "OnClick",
                    "s": "\r\ngraphicReplace(\"Public/essai/vue0\");"
                }
             ]
         }
    ]
}  
alert(S[0].t);  // if you choose first
alert(obj.S[0].t);  // if you choose second