用json-simple解码JSON的问题

时间:2014-12-13 10:11:32

标签: java json

我按照本教程介绍了如何使用java解码json:https://code.google.com/p/json-simple/wiki/DecodingExamples

在我的项目中,我得到info_string

   {"server_ip":"http://localhost:3000/","device_id":14}

我想解码:我试过了:

  System.out.println(info_string);
 => {"server_ip":"http://localhost:3000/","device_id":14}
  Object obj = JSONValue.parse(info_string);
  System.out.println(obj);
 => null
  JSONArray array=(JSONArray)obj;
 => null
  System.out.println(array);

正如您所见,arrayobj变量为null并且不包含任何数据! 我错了什么?感谢

1 个答案:

答案 0 :(得分:1)

肯定有不可打印/不可见的字符。我建议你使用regular expression to remove them,因为如果你看起来像

String info_string = "   {\"server_ip\":\u0000\"http://localhost:3000/\",\"device_id\":14}";

trim()什么都不做。

请尝试:

Object obj = JSONValue.parse(info_string.replaceAll("\\p{C}", ""));

  

我怎样才能获得单个值?例如来自此的device_id   OBJ?

在您的情况下,parse将返回JSONObject,因此您可以转换结果,然后使用get方法获取与相应密钥关联的值:

JSONObject obj = (JSONObject) JSONValue.parse(info_string);
String serverIp = (String) obj.get("server_ip"); //http://localhost:3000/    
long deviceId = (Long) obj.get("device_id"); //14