2011-01-07 7 views
2

私はjsonの文字列を解析するために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が有効ではありません。しかし、それはそうですか?

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

*編集JSON::私のJSON文字列は次のようになります

後にカンマを削除する(まだエラーが表示されます)

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

バイナリ " – powtac

答えて

3
  1. ...バイナリ」
  2. 2つの間}}
  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

my bad。私はjsonをカットして、その一部(1オブジェクト)をここに掲載しましたが、うまくトリミングするのを忘れていましたが、これは問題ではありません。 – Rizon

+0

だから私は、私はあなたのWebサービスの開発者にjsonが返される方法を変更するように指示する必要があると言っていますか? – Rizon

+0

"arroundの日付 – powtac

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ライブラリにフィードする前にいつでもローカルで変更することができます。それは単なる文字列であり、何も魔法ではありません。