以下代码是打印哈希值而不是数组
JSONObject myjson1 = new JSONObject(expectedResult);
Iterator x = myjson1.keys();
JSONArray jsonArray = new JSONArray();
while (x.hasNext()){
String key = (String) x.next();
jsonArray.put(myjson1.get(key));
System.out.println(x);
}
输出如下:
java.util.HashMap$KeyIterator@42a0b130
java.util.HashMap$KeyIterator@3c2a5fb9
java.util.HashMap$KeyIterator@6e68bc46
java.util.HashMap$KeyIterator@3223cb64
java.util.HashMap$KeyIterator@256c426b
PS:将Json转换为数组(键:值)形式
答案 0 :(得分:0)
不要使用(String)而是使用toString() 所以
String key = (String) x.next();
jsonArray.put(myjson1.get(key));
System.out.println(x.toString());
如果你想将它转换为字符串数组:
String[] result = jsonArray.values().toArray(new String[0]);
答案 1 :(得分:0)
我建议你使用Gson库来管理.json文件。它更准确,更加用户友好,效果非常好。
顺便说一句,你要求Java打印对象“x”(Iterator)。对象包含对其自身的内存分配的引用。 您必须要求您的软件以人类可读的格式转换它,例如String is。 因此,请尝试在 x 调用后添加 .toString()方法。
尝试做类似的事情:
JSONObject myjson1 = new JSONObject(expectedResult);
Iterator x = myjson1.keys();
JSONArray jsonArray = new JSONArray();
while (x.hasNext()){
String key = (String) x.next();
jsonArray.put(myjson1.get(key));
System.out.println(x.toString());
}
我希望能提供帮助。