【问题标题】:JSON.parse() returns wrong values for integersJSON.parse() 返回错误的整数值
【发布时间】:2018-03-15 20:52:37
【问题描述】:

[编辑]我后来修改了数据,它在扩展时反映在对象中,我会尽可能接受我的答案。[/编辑]

我有一个需要解析的简单 JSON 字符串:

{"Points": [{"x": 0,"y": 33},{"x": 2200,"y": 28},{"x": 4400,"y": 23},{"x": 6600,"y": 20},{"x": 8800,"y": 19},{"x": 11000,"y": 18},{"x": 13200,"y": 17},{"x": 15400,"y": 15},{"x": 17600,"y": 13},{"x": 19800,"y": 12}]}

该字符串由 C++ 代码生成,用于图形绘制。当我将它粘贴到 json 格式化程序中时,它解析得很好,给出了正确的值。我面临的问题是奇怪的 Y 值,例如数组“Points”中的第一个对象的 y 值为 20 - 字符串中的任何地方都没有 20。

见附图,它解释了一切。图片前面的代码如下:

RequestJSONParse: function(Data)
{
    var Request = Data.split("|");
    var RequestType = Request[0];
    var RequestParams = Request[1];
    var RequestData = undefined;

    if (typeof Request[2] != "undefined" && Request[2] != "")
    {                       
        console.log("---");
        console.log(Request[2]);
        console.log("---");

        RequestData = JSON.parse(Request[2]);

        console.log("---");
        console.log(RequestData);
        console.log("---");
    }

我的问题是 - 是一些特殊字符还是 JSON.parse 专门解析 x,y 值的特殊方式?或者这是一个编码问题还是我什至无法想到的问题?我从事这个项目已经 2 年了,从来没有遇到过这样的事情,而且我们的大部分 UI 都是通过解析 JSON 数据制作的。

Image explaining the problem

【问题讨论】:

  • 这是 20 个:{"x": 6600,"y": 20}
  • jsbin.com/paganawado/1/edit?js,console — 我无法重现该问题。
  • 还要注意RequestData 日志旁边的蓝色i - 您是否在其中处理数据 - 看起来它可能在您登录后被修改,并且您正在查看修改后的数据展开后的数据。
  • @JamesThorpe 这是关键,后来我在修改数据。

标签: javascript json parsing


【解决方案1】:

在这里检查你的做法

var json = "{\"Points\": [{\"x\": 0,\"y\": 33},{\"x\": 2200,\"y\": 28},{\"x\": 4400,\"y\": 23},{\"x\": 6600,\"y\": 20},{\"x\": 8800,\"y\": 19},{\"x\": 11000,\"y\": 18},{\"x\": 13200,\"y\": 17},{\"x\": 15400,\"y\": 15},{\"x\": 17600,\"y\": 13},{\"x\": 19800,\"y\": 12}]}";
var Request = json.split("|");
var data = JSON.parse(Request[0]);
console.log(data);

如果你以这种方式获取字符串,你可以使用上面的代码......

【讨论】:

    【解决方案2】:

    @JamesThorpe 说得对,我后来修改了对象,我的更改在对象扩展时反映在对象中。蓝色的 i 符号对我来说是缺失的链接。

    【讨论】:

    • 您接受了自己的答案,而不是要求投稿人发表评论作为答案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2023-01-22
    • 2019-12-09
    • 2014-04-29
    • 2016-01-09
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多