我的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数据,因为它太长了。
答案 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);
}
的属性一样访问它。
或者请指明该列代表的内容。