2012-06-18 5 views
2

JSON 질문이 있습니다.JSON 구문 분석이 JSONObject와 작동하지 않습니다.

다음 코드는 오류가 발생한 곳입니다. 결과 문자열이 다음과 같은지 확인했습니다.

{"name":"test", "num1":1.0, "num2":2.0} 

이것은 코드입니다.

byte[] raw = new byte[1536]; 

try{ 

    DatagramPacket packet = new DatagramPacket(raw, raw.length); 
    mSocket.receive(packet); //Multicast Socket declared in another part of the program 
    String result = new String(packet.getData(), 0, packet.getLength()); 
    JSONObject jObj = new JSONObject(result); 
    String name = jObj.getString("name"); 
} 
catch (JSONException e){ 

} 
catch(Exception eX){ 

} 

그러나 다음 오류와 함께 JSONException이 발생합니다.

이름에 값이 없습니다.

내 JSON 구문에 문제가 있습니까?

감사합니다,

This is what the string shows me

This is what the json object shows me

+1

아니요. 괜찮습니다. 브라우저에서 URL을 가리켜 실제로 돌아 오는 것임을 확인할 수 있습니다. –

+0

결과에 { "name": "test", "num1": 1.0, "num2": 2.0} ?? – Akram

+0

로그를 사용하여 서비스에서 정확한 문자열을 가져 와서 여기에 게시하십시오. – DanO

답변

1

인코딩에 문제가있을 것 같습니다. UTF-8을 지정하려고 시도 했습니까?

String response = new String(packet.getData(), 0, packet.getLength(), "UTF-8"); 

나는 무슨 문제가 될지 모르겠다. 나머지 코드는 올바르게 보입니다.

+0

logcat에서 나는 다음을보고있다. 06-18 11 : 50 : 52.550 : I/결과 문자열 정보 (21713) : { ""n "a ?? m ?? e ??"?? : ?? "?? t ?? e? "~ ~ ~ ~ ~ ~ ~"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ " "당신은 인코딩에 대해 옳다고 생각합니다." 그러나 "UTF-8"매개 변수를 사용했지만 여전히 동일한 문자열을 사용합니다. – DoubleDunk

+0

예 서버 측 인코딩 오류입니다. 고맙습니다. – DoubleDunk

0
String result = "{\"name\":\"test\", \"num1\":1.0, \"num2\":2.0}"; 
JSONObject data = new JSONObject(result); 
System.out.println(data.getString("name")); 
System.out.println(data.get("num1")); 
System.out.println(data.get("num2")); 
관련 문제