2016-07-18 321 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} 這一個問題做:{titleDE=Costa Rica, id=10, titleEN=Costa Rica} 例外說,空格是一個未終止的對象。

+2

你應該在所有這些引號。 – chrylis

+0

{「titleDE」:「哥斯達黎加」,「id」:「10」,「titleEN」:「哥斯達黎加」}這是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\" "

整數值可以不帶引號,但引用它們並稍後將這些字符串轉換爲適當的數字類型是一種很好的做法。當您從JSON投下10時,一些自動解析器將投射到int,其中一些投射到long。出於這個原因,最好自己施放它。

1

工作:

用途:

{ 「titleDE」: 「哥斯達黎加」, 「ID」:10, 「titleEN」: 「哥斯達黎加」 }

空間在那裏。沒有任何問題。只需使用:代替=

1

嘗試以下JSON:

{titleDE: 「哥斯達黎加」,編號:10,titleEN: 「哥斯達黎加」}

你可以把任何JSON在http://jsonviewer.stack.hu/和驗證它。