2016-07-18 8 views
0

JSONという形式の文字列があり、値を取得しようとしています。私のメソッドは正常に動作しますが、値に空白があると、メソッドがクラックして例外が発生します。この文字列が正常に動作している間JSON値の空白

private String getValue(String jsonval) 
{ 
    try 
    { 
     JSONObject jsonObject = new JSONObject(jsonval); 
     return jsonObject.optString("id"); 
    } 
    catch(JSONException e) 
    { 
     e.printStackTrace(); 
    } 
    return null; 
} 

{titleDE=Deutschland, id=10, titleEN=Germany} この1つは問題になります:{titleDE=Costa Rica, id=10, titleEN=Costa Rica} 例外は空白が終端されていないオブジェクトであることを述べている以下の私のコードです。

+2

これらのすべてに引用符を付ける必要があります。 – chrylis

+0

{"titleDE": "Costa Rica"、 "id": "10"、 "titleEN": "Costa Rica"}これはcurrect json形式です。 idは文字列です。 –

答えて

1

JSON文字列のキーと値を二重引用符で囲んで送ります。このように - "key"="string"

{"titleDE"="Deutschland", "id"=10, "titleEN"="Germany"} 
{"titleDE"="Costa Rica", "id"=10, "titleEN"="Costa Rica"} 

キーと= OR =と値の間に空白がない確認します。整数値/ブール値には引用符を使用できません。

1

JSON次試してみてください。

{"titleDE"="Costa Rica", "id"=10, "titleEN"="Costa Rica"} 

あなたの問題はStringは、スペースを含まない文字の連鎖(悪い習慣)または""の間に配置された文字の連鎖のどちらかであるということです。 Stringのエスケープ文字は\が最も多く、"を使用します。

例: "Deutchland""Costa Rica""He said \"whatever\" "

整数値には引用符を付けることはできませんが、引用符を付けて後でこれらの文字列を適切な数値型にキャストすることをお勧めします。 10JSONからキャストすると、一部の自動パーサーはそれをintにキャストし、一部はlongにキャストします。このため、自分でキャストする方がよいでしょう。

1

ワーキング:

使用:

{ "titleDE": "コスタリカ"、 "ID":10、 "titleEN": "コスタリカ" }

スペースができますそこにいる。問題ない。ただ、使用:代わりに=

1

JSONの下に試してみてください:あなたはhttp://jsonviewer.stack.hu/内の任意のJSONを入れて確認することができ

{ "コスタリカ" titleDE: "コスタリカ"、ID:10、titleENを}それ。