【问题标题】:Javascript JSON.stringify object containing arrays serialization problemJavascript JSON.stringify 对象包含数组序列化问题
【发布时间】:2010-02-19 22:17:16
【问题描述】:

我的 javascript 我有一个类似于以下内容的对象:

var myObj = {
  prop1: 1,
  prop2: 2,
  prop3: ["a", "b", "c", "d", "e"],
  prop4: 4,
  prop5: ["f", "g", "h", "i"]
}

它是一个包含许多属性的对象。每个属性可能是也可能不是数组。

var serializedMyObj = JSON.stringify(myObj);

serializedMyObj是(通过查看firebug中serialize函数的结果找到的):

"{ "prop1":1, "prop2":2, "prop3":["a","b","c","d", "e"], "prop4":4, "prop5":["f","g","h","i"] }"

如果我 alert(serializedMyobj); 它显示我:

{
  "prop1": 1,
  "prop2": 2,
  "prop3": [],
  "prop4": 4,
  "prop5": []
}

真正的问题是,当我将此数据传递到 Asp.Net PageMethod 时,服务器获得的数据与我在警报对话框中显示的数据相同,而不是在萤火虫中。它在某处丢失了数组值,只输入了[]

有谁知道为什么会发生这种情况或有解决方法吗?这可能是我忽略的一些简单的事情。

【问题讨论】:

    标签: asp.net javascript ajax json pagemethods


    【解决方案1】:

    我在 Firefox 上得到以下(正确的)输出:

    {"prop1":1,"prop2":2,"prop3":["a","b","c","d","e"],"prop4":4,"prop5":["f","g","h","i"]}
    

    你用的是什么浏览器?

    另外,我注意到 myObjJSON.stringify(myobj); 中是小写的 - 我认为这只是一个错字?

    【讨论】:

    • 我也在用firefox,你是怎么查看序列化后的字符串的? (我修正了错字,谢谢)
    • 通过警报(serializedMyObj); ...但萤火虫也同意这个输出。这是您的实际输出,还是仅针对 SO 进行了清理?也许那里有一些无效字符???
    • 这不是实际数据,实际数据是带有 Guid 数组的整数属性,Guid 表示为字符串。我都是很简单的东西,一定有什么被我忽略了。
    • 您可能需要仔细比较您的数据与 json.org 上的图表 - 也许您在某处有一个无效字符导致问题??
    • 问题是我正在使用 ajax 调用填充数组(尚未返回)。
    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2021-10-05
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多