【问题标题】:JSON parsing not working with JSONObjectJSON 解析不适​​用于 JSONObject
【发布时间】:2012-06-18 18:20:42
【问题描述】:

我有一个 JSON 问题。

以下代码是发生错误的地方。我已经验证结果字符串如下。

{"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。

name 没有值。

我的 JSON 语法有问题吗?

谢谢,

【问题讨论】:

  • 不,看起来不错。您可以通过将浏览器指向该 url 来验证它确实是您返回的全部内容。
  • 你确定你的结果包含 {"name":"test", "num1":1.0, "num2":2.0} ??
  • 尝试使用 Log 从服务中获取确切的字符串并在此处发布。

标签: java android json sockets


【解决方案1】:

看来编码有问题。您是否尝试过指定 UTF-8

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

我不确定问题可能是什么。您的其余代码看起来是正确的。

【讨论】:

  • 在 logcat 中,我看到以下内容。 06-18 11:50:52.550: I/result string info(21713): {??"??n??a??m??e??"??:??"??t??e? ?s??t??"??,??"??n??u??m??1??"??:??1??.??0??,??"??n ??u??m??2??"??:??2??.??0??} 我认为您对编码是正确的。但是,我使用了“UTF-8”参数,仍然得到相同的字符串。
  • 是的,这是服务器端的编码错误。非常感谢。
【解决方案2】:
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"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多