繁体   English   中英

JSON验证

[英]JSON validation

我正在尝试使用iPhone上的json-framework来解析json字符串。 当我调用这个方法时:

NSDictionary *dictionary = [jsonString JSONValue];

我收到错误:

"Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key:
 Options\" UserInfo=0x4b5f390 {NSUnderlyingError=0x4b5f320 \"Expected value while
 parsing array\", NSLocalizedDescription=Object value expected for key: Options}"

根据这个json验证器[1]: http//www.jsonlint.com//我的json无效。 但是这样吗?

我的json字符串看起来像这样:

{
"Options": [
    {
        "ID": "7",
        "A": "1",
        "EAt": new Date(2011,
        0,
        7,
        12,
        30,
        0),
        "Type": "Binary",       
    } 
}

*编辑Json :(仍然会出现错误)

{
"Options": [
    {
        "ID": "7",
        "A": "1",
        "EAt": new Date(2011,
        0,
        7,
        12,
        30,
        0),
        "Type": "Binary"       
    } 
 ]
}

您的JSON无效。

这是因为您无法在JSON中创建对象实例。 这不是一个有效的价值。

new Date(2011, 0, 7, 12, 30, 0)

你错过了关闭阵列支架。 其他一切都还可以。

  1. 删除后的逗号...二进制“
  2. 在两个}之间添加一个}。
  3. 日期不能像这样使用,请参阅如何格式化Microsoft JSON日期? http://msdn.microsoft.com/en-us/library/bb299886.aspx#intro_to_json_sidebarb

这是有效的:

{
    "Options": [
        {
            "ID": "7",
            "A": "1",
            "EAt": "new Date(2011,0,7,12,30,0)",
            "Type": "Binary" 
        } 
    ] 
}

您无法在JSON字符串中实例化Date对象(或任何对象)。

您需要让负责发出此JSON的代码的任何人更改它以发出有效的JSON。 他们现在推出了一些不能与任何JSON解析器一起使用的东西。 也许他们有一个可以处理这类事情的自定义JSON使用者,但这不是标准的JSON。

如果我是你,我会让他们将当前日期的字符串放入该字段(所以:“2011-07-01 12:30:00”),然后在你的对象NSDateFormatter中解析它。

如果发现JSON不是你可以改变的东西,你总是可以在将它提供给JSON库之前在本地进行修改。 它只是一个字符串,没什么神奇的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM