2011-01-07 69 views
2

我正尝试在iPhone上使用json-framework来解析json字符串。 当我调用这个方法: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"  
    } 
] 
} 
+0

删除逗号后...二进制“ – powtac 2011-01-07 12:19:41

回答

3
  1. 后删除逗号......二进制”
  2. add a] between the}}。
  3. 日期不能这样使用,看到How do I format a Microsoft JSON date?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" 
     } 
    ] 
} 
+0

我的不好,我把json剪掉了,只是把它的一部分(1个对象)放在这里,我忘记修剪了它,但是这并不是问题, – Rizon 2011-01-07 12:25:14

4

您的JSON是无效的。

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

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

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

1

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

您需要负责发布此JSON的代码,并将其更改为发出有效的JSON。他们正在推出一些无法使用任何JSON解析器的东西。也许他们有一个可以处理这种事情的自定义JSON消费者,但这不是标准的JSON。

如果我是你,我会让他们把当前日期的字符串放到该字段中(如:“2011-07-01 12:30:00”),然后在你的obj-cusing NSDateFormatter 。

如果发现JSON不是您可以更改的东西,您可以在将它提供给JSON库之前在本地进行修改。这只是一个字符串,没有什么不可思议的。