2016-07-18 4 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": "Costa Rica", "id": "10", "titleEN": "Costa Rica"} 이것은 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": "CostaRica" "ID": 10, "titleEN": "코스타리카" }

공간 수 거기있어. 문제 없습니다. 그냥 사용하는 대신 =

1

JSON 아래에보십시오 : 당신은 http://jsonviewer.stack.hu/의 모든 JSON을 넣어 확인할 수 있습니다

{ "코스타리카"titleDE : "코스타리카", ID : 10, titleEN을} 그것.