2013-10-16 4 views
14

私はこのJSONが私たちのRESTサービスの1から来るがあります。私はこのJSONをパースするためのjava-json.jarを使用していますA JSONObjectテキストは、「{」エラー

[ 
    "{\"category_name\":[\"Industry Components\"],\"categoryId\":[1]}", 
    "{\"category_name\":[\"Business Components\"],\"categoryId\":[2]}", 
    "{\"category_name\":[\"Utilities\"],\"categoryId\":[3]}", 
    "{\"category_name\":[\"Tools\"],\"categoryId\":[4]} 
] 

、これは簡単なスニペットです私は、JSON文字列の上を通過しようとしています。ここで

JSONObject jsonObject = new JSONObject(jsonStr); 

しかし、私は例外の下に取得しています:

org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1] 

最初に私はそれがだと仮定しました

String replacedStr = jsonStr.replaceAll("\\[", "").replaceAll("\\]", "") 

をしかし、それでも私は、同じ例外を取得しています:JSONと私であるための[]文字は以下のように置き換えることを試みました。誰でも私が間違っていることを知ってもらえますか?

+1

最後の行に最後の引用符がありません。 – par

答えて

34

私はあなたがいないJSONObjectを使用する必要があると仮定しますが、JSONArray

+1

ありがとうございました。今は完璧に動作しています。 –

14

JSONオブジェクトは、以下の構造を、次のとおりです。あなたが取得する場合

[ 
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName": "Jones" } 
] 
+1

オブジェクトに配列を埋め込む場合は、 '{" key ":[value(s)]}' – par

+0

のようにする必要があります。私は入力(JSON)を制御できません受信する。 (そして私はあなたにdownvoteをしなかった) –

+0

この区別をありがとう。 – Speakeasys

0

{ 
"array": [ 
{ 
    color: "red", 
    value: "#f00" 
}, 
{ 
    color: "green", 
    value: "#0f0" 
} 
] 
} 

JSON配列は、以下の構造を次のJSONObjectテキストは '{'例外で始まる必要があります。 まず、JSONObjectコンストラクタに何が渡されたかを確認してください。

正しいjson.txtファイルを渡す必要があります.Jsonobjectに渡すものが何であるかを確認してください。

String request = FileUtils.readFileToString(new File("/home/achaure/Downloads/Amol/KountRestTest/Documents/request.txt")); 

JSONObject jsonObject = new JSONObject(request);