无法访问JSON中的变量

时间:2015-05-21 08:43:19

标签: java javascript json

我的JSONObject出现问题

这是我的代码:

importPackage(Packages.org.apache.commons.io);
importPackage(Packages.java.io);

fisTargetFile = new FileInputStream(new File("C:/moe.json"));
input = IOUtils.toString(fisTargetFile, "UTF-8");

jsonData = input;
myJSONObject = eval('(' + jsonData + ' )');
len = myJSONObject.cells.length;
count = 0;
if (count < len) {
    var name = myJSONObject.cells[count].attrs.text;
    var type = myJSONObject.cells[count].type;
    var photo = myJSONObject.cells[count].attrs.image.xlink:href;
    row["name"] = name;
    row["type"] = type;
// row["photo"]    = photo;
    count++;
    return true;
}
return false;

我的问题出在这一行var photo = myJSONObject.cells[count].attrs.image.xlink:href;

我无法访问我的图片数据,因为这不是正确的语法&#34;:&#34;我怎么能克服它?有没有办法逃避&#34;:&#34; ?

修改: 这是我的JSON对象:

{
    "cells": [
    {
        "type": "basic.Platform",
        "size": {
            "width": 60,
            "height": 60
         },
  "custom": {
    "identifier": [
      {
        "name": "Name1",
        "URI": "Value1"
      }
    ],
    "classifier": [
      {
        "name": "Name2",
        "URI": "Value2"
      }
    ],
    "output": [
      {
        "name": "Name3",
        "URI": "Value3"
      }
    ],
    "imported": false,
    "event": [

    ]
  },
  "ref": [

  ],
  "uuid": [
    "dc537ba7-b9dc-476e-9f09-8c1f5211f9bb"
  ],
  "position": {
    "x": 390,
    "y": 230
  },
  "angle": 0,
  "id": "dc537ba7-b9dc-476e-9f09-8c1f5211f9bb",
  "embeds": "",
  "z": 1,
  "description": "",
  "attrs": {
    "text": {
      "font-size": "9",
      "text": "rere",
      "ref-x": "0.5",
      "ref-dy": "20",
      "fill": "#000000",
      "font-family": "Arial",
      "display": "",
      "stroke": "#000000",
      "stroke-width": "0",
      "font-weight": "400"
    },
    "image": {
      "width": 50,
      "height": 50,
      "xlink:href": "data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACWCAYAAAA\/mr2PAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS5EOsBjwfqm3fvx0eIfsT89"
    }
  }
}

] }

我修剪了xlink:href数据,因为它太长了。

3 个答案:

答案 0 :(得分:1)

在JavaScript中,对象也是关联数组(或哈希) 也就是说,也可以通过调用foo.bar

来读取或写入属性foo["bar"]
var photo = myJSONObject.cells[count].attrs.image["xlink:href"];

答案 1 :(得分:1)

是的,有

myJSONObject.cells[count].attrs.image["xlink:href"]

推理:任何使用点符号分隔对象引用的地方,您也可以使用方括号表示法并传入字符串。这是引用不是“有效”标识符的标准方法,例如名称中间的冒号。

答案 2 :(得分:1)

您可能会尝试像for (var i = 0 ; i < myArray.length ; i++) { console.log(i); } 的属性一样访问它。

或者请指明该列代表的内容。