2011-01-07 74 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庫之前在本地進行修改。這只是一個字符串,沒有什麼不可思議的。