2010-11-22 9 views
0

に応答を変換しながらはエラーNSDictionaryの

ERROR ...エラーの下に取得しています:-JSONValueに失敗しました。エラートレースは次のとおりです。( エラードメイン= org.brautaset.JSON.ErrorDomainコード= 3のUserInfo = 0x4d38270 "認識できない先頭文字" )

どんな提案...

+1

デコードしようとしているデータを確認する必要があります – grahamparks

+1

アプリケーションが解析するJSONオブジェクトを作成する場合は、JSONオブジェクトを正しく作成しているかどうかを確認してください。また、Grahamが言うように、データを転記するためにデータ – Bourne

+0

+ 100000を貼り付けます。 – JeremyP

答えて

0

によって実際にJSONオブジェクトを作成しておりませんAPIを使用して取得しています。

これでエラーが発生しました。有効なjsonオブジェクトをnsdictionaryに隠すためのオブジェクトを与えていません...有効なjsonオブジェクトを取得するには、jsonオブジェクトを取得するための有効なURLを生成する必要があります。あなたの提案のための

おかげで...

1

あなたは最も可能性が高い私と同じ問題を持っている...返すデータは、JSONP形式の代わりに、純粋なJSONです。言い換えれば、あなたは

functionCall({"Name": "Foo", "Id" : 1234, "Rank": 7}); 

だけではなく

{"Name": "Foo", "Id" : 1234, "Rank": 7} 

詳細情報here

あなたはそれを解析する前に文字列から機能や括弧を除去する必要がありますのようなものを扱うことになりますJSONフレームワークを通じてあなたは、次の正規表現(参照やすくするために間隔をあけ)を持つことを行うことができます。

\w+ \s? \((\{ .* \}) \} 

をそして、これを書くためのスクリプトは次のとおりです。resultStringは、URLからの応答である

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression 
    regularExpressionWithPattern:@"\\w+\\s?\\((\\{.*\\})\\)" 
         options:NSRegularExpressionCaseInsensitive 
          error:&error]; 

[regex replaceMatchesInString:resultString 
         options:0 
         range:NSMakeRange(0, [resultString length]) 
       withTemplate:@"$1"]; 

NSLog(@"resultString = %@", resultString); 
NSLog(@"converted = %@", [resultString JSONValue]); 

リクエスト...正規表現がそれを更新するには、NSMutableStringとして保存する必要があります。