【问题标题】:Read JSON in Java Script [closed]在 Javascript 中读取 JSON [关闭]
【发布时间】:2013-03-20 07:07:11
【问题描述】:

我创建了一个 JSON 变量并将其解析为 JSON。但我无法读取这些值。我什么都试过了。但它不起作用。这是我的 JavaScript 代码。

var graph='{"graphSpace":[{"rectangle":{"minX":0.0,"minY":0.0,"maxX":0.0,"maxY":0.0},"contents":"","rights":[],"lefts":[],"tops":[],"downs":[],"annotation":{"id":255,"type":"line"}],[{"rectangle":{"minX":174.0,"minY":87.0,"maxX":989.0,"maxY": 136.0},"contents":"Carter Brothers Fire u0026 Life Safety","rights":[{"id":59}],"lefts":[],"tops":[{"id":255}],"downs":[{"id":14},{"id":16},{"id":19},{"id":21},{"id":28},{"id":31},{"id":33},{"id":35},{"id":42},{"id":45},{"id":47},{"id":49},{"id":52},{"id":183},{"id":169},{"id":199},{"id":190},{"id":201},{"id":192},{"id":208},{"id":215},{"id":230},{"id":233},{"id":240},{"id":243},{"id":246}],"annotation":{"id":7,"type":"line"}},{"rectangle":{"minX":2073.0,"minY":92.0,"maxX":2327.0,"maxY":150.0},"contents":"Invoice","rights":[],"lefts":[{"id":7}],"tops":[{"id":7},{"id":255}],"downs":[{"id":67},{"id":70},{"id":72},{"id":74},{"id":76},{"id":100},{"id":102},{"id":105},{"id":108},{"id":111},{"id":114},{"id":135},{"id":160},{"id":151},{"id":162},{"id":153},{"id":264},{"id":280},{"id":302}],"annotation":{"id":59,"type":"line"}}]}';

为了您的方便,我会将数据以可读的格式放置。

    {
   "graphSpace":
    [
        {"rectangle":
            "{  "minX": 0.0,  "minY": 0.0,  "maxX": 0.0,  "maxY":0.0}",
        "contents":"",
        "rights":"[]",
        "lefts":"[]",
        "tops":"[]",
        "downs":"[]",
        "annotation":
            "{  "id": 255,  "type": "line"}"
    ],
    [
        {"rectangle":
            "{  "minX": 174.0,  "minY": 87.0,  "maxX": 989.0,  "maxY": 136.0}",
        "contents":"JSON u0026 JAVASCRIPT",
        "rights":"
            [{"id":59}]",
        "lefts":"[]",
        "tops":"[{"id":255}]",
        "downs":"
            [{"id":14},]",
        "annotation":
            "{  "id": 7,  "type": "line"}"
        },
        {"rectangle":
            "{  "minX": 2073.0,  "minY": 92.0,  "maxX": 2327.0, "maxY":150.0}",
        "contents":"JSON EXample",
        "rights":"[]",
        "lefts":
            "[{"id":7}]",
        "tops":
            "[{"id":7},{"id":255}]",
        "downs":
            "[{"id":67},{"id":70},{"id":72},]",
        "annotation":
            "{"id": 59,  "type": "line"}"
        }
    ]
}

现在我正在创建一个变量来存储解析的数据。 然后我正在检查它是否存储。所以我正在读取第一个值并提醒它。

var graphSpace=JSON.parse(graph);
var minx = graphSpace[0].rectangle.minX;
alert(minx);

但是当我打开这个 JSP 页面时,我看不到那个警报。这里有什么错误?

更新:抱歉,我在复制时忘记添加第一个键。请检查一下

【问题讨论】:

  • 如果这是代码,那么你拼错了alert
  • 哦!对不起,当我在这里输入时,我犯了错误。在我的代码中,它拼写正确。
  • 您看到了什么错误?实际分配给graphSpace 的值是多少?它是一个数组吗?它有第 0 个元素吗?该元素是否具有 .rectangle 属性? that 属性是否具有 .minX 属性?在发布这样的问题之前,您需要进行大量调试。最大的问题可能是那不是有效的 JSON。
  • 我不认为这是一个有效的格式
  • 请使用 Javascript 控制台或调试工具。您的 JSON 字符串中有语法错误。

标签: javascript json jsp


【解决方案1】:

这是无效的格式。删除包裹数组的花括号。

 var graph='[{"rectangle":{"minX":0.0,"minY":0.0,"maxX":0.0,"maxY":0.0},"contents":"","rights":[],"lefts":[],"tops":[],"downs":[],"annotation":{"id":255,"type":"line"}],[{"rectangle":{"minX":174.0,"minY":87.0,"maxX":989.0,"maxY": 136.0},"contents":"Carter Brothers Fire u0026 Life Safety","rights":[{"id":59}],"lefts":[],"tops":[{"id":255}],"downs":[{"id":14},{"id":16},{"id":19},{"id":21},{"id":28},{"id":31},{"id":33},{"id":35},{"id":42},{"id":45},{"id":47},{"id":49},{"id":52},{"id":183},{"id":169},{"id":199},{"id":190},{"id":201},{"id":192},{"id":208},{"id":215},{"id":230},{"id":233},{"id":240},{"id":243},{"id":246}],"annotation":{"id":7,"type":"line"}},{"rectangle":{"minX":2073.0,"minY":92.0,"maxX":2327.0,"maxY":150.0},"contents":"Invoice","rights":[],"lefts":[{"id":7}],"tops":[{"id":7},{"id":255}],"downs":[{"id":67},{"id":70},{"id":72},{"id":74},{"id":76},{"id":100},{"id":102},{"id":105},{"id":108},{"id":111},{"id":114},{"id":135},{"id":160},{"id":151},{"id":162},{"id":153},{"id":264},{"id":280},{"id":302}],"annotation":{"id":59,"type":"line"}}]';

之后一切都会好起来的。

【讨论】:

  • 你确定吗?这不会产生两个数组,它们之间有一个逗号,这是无效的吗?
  • 很好的 InviS,不过它还有其他几个问题。
【解决方案2】:

您确定您的 JSON 有效吗?

使用本网站检查: http://jsonlint.com/

它告诉我你的 JSON 有问题。

【讨论】:

    【解决方案3】:

    使用 jsonlint.com 来纠正您的 json.com。改正后是这样的。为 LEVEL 1 和 LEVEL 指定合适的名称

    {
        "LEVEL 1": [
            {
                "rectangle": {
                    "minX": 0,
                    "minY": 0,
                    "maxX": 0,
                    "maxY": 0
                },
                "contents": "",
                "rights": "[]",
                "lefts": "[]",
                "tops": "[]",
                "downs": "[]",
                "annotation": {
                    "id": 255,
                    "type": "line"
                }
            }
        ],
        "LEVEL 11": [
            {
                "rectangle": {
                    "minX": 174,
                    "minY": 87,
                    "maxX": 989,
                    "maxY": 136
                },
                "contents": "JSON u0026 JAVASCRIPT",
                "rights": {
                    "id": 59
                },
                "lefts": "[]",
                "tops": {
                    "id": 255
                },
                "downs": {
                    "id": 14
                },
                "annotation": {
                    "id": 7,
                    "type": "line"
                }
            },
            {
                "rectangle": {
                    "minX": 2073,
                    "minY": 92,
                    "maxX": 2327,
                    "maxY": 150
                },
                "contents": "JSON EXample",
                "rights": "[]",
                "lefts": {
                    "id": 7
                },
                "tops": {
                    "id": 7
                },
                "you2": {
                    "id": 255
                },
                "downs": [
                    {
                        "id": 67
                    },
                    {
                        "id": 70
                    },
                    {
                        "id": 72
                    }
                ],
                "annotation": {
                    "id": 59,
                    "type": "line"
                }
            }
        ]
    }
    

    【讨论】:

      【解决方案4】:

      此格式无效。最外面的 {} 是不需要的,并删除嵌入对象周围的引号,例如:

      "rectangle": "{  "minX": 174.0,  "minY": 87.0,  "maxX": 989.0,  "maxY": 136.0}",
      

      改为:

      "rectangle": {  "minX": 174.0,  "minY": 87.0,  "maxX": 989.0,  "maxY": 136.0},
      

      【讨论】:

      • ...删除变量名周围的引号...你的意思是像'{[{rectangle:{minX:0.0,minY:0.0,...?
      • ...我的意思是内部对象。他们不需要引号。
      【解决方案5】:

      您的 JSON 无效。 JSON 中对象的属性需要以名称:值对的形式列出,但您尚未对最外层的对象执行此操作。由于您似乎希望这是一个数组,我建议将最外面的大括号更改为方括号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 2017-05-04
        • 2023-04-02
        相关资源
        最近更新 更多