我从json开始:
{
"Key1" : "Value1",
"Key2" : "Value2"
}
然后我用字符串对这个json进行硬编码:
String json = "{ \"Key1\" : \"Value1\", \"Key2\" : \"Value2\" }";
接下来我尝试解析json:
JSONObject content = null;
try {
content = new JSONObject(json);
} catch (JSONException e) {
e.printStackTrace();
return null;
}
String key1 = content.optString("Key1", null);
如果我查看通过调用JSONObject创建的hashmap,它看起来是正确的:
{Key2=Value2, Key1=Value1}
但是当我在调试器中查看字符串key1的值时,我得到了这个:
[V, a, l, u, e, 1, U, U, U, U, U, U, U, U, U, U]
其中U似乎是unicode字符25A1(白色方块)。
我也尝试过通用get(“Key1”)方法,将结果转换为字符串,我得到相同的行为?!
答案 0 :(得分:3)
我没有看到您的代码存在问题,因为这种轻微修改似乎有效:
public static void main(String[] args)
{
String json = "{ \"Key1\" : \"Value1\", \"Key2\" : \"Value2\" }";
JSONObject content = null;
try
{
content = new JSONObject(json);
}
catch (JSONException e)
{
e.printStackTrace();
return;
}
String key1 = content.optString("Key1", null);
System.out.print(key1 + "end!");
}
控制台输出显示:Value1end!
在查看调试器中的代码时,我看到了:
如果我猜测,可能只是调试器用于保存String
的额外缓冲区空间。您是否尝试过查看代码认为的内容?
"Value1".equals(key1); //should return true if everything is working correctly.
答案 1 :(得分:0)
optString(java.lang.String key)获取与密钥关联的可选字符串。
你应该使用
getString(java.lang.String key)获取与密钥关联的字符串。
或者我错过了什么?