我想用数组中的两个对象创建一个JSON数据
String message = "{ "animal" : [{"name":"alice", "type":"cat"}, {"name":"john", "type":"dog"}, {"name":"peter", "type":"bird"} ] }";
但这会产生一些错误,无法在eclipse中运行
我该如何解决?
答案 0 :(得分:1)
你必须使用反斜杠转义双引号,如下所示:
String message = "{ \"animal\" : [{\"name\":\"alice\", \"type\":\"cat\"}, {\"name\":\"john\", \"type\":\"dog\"}, {\"name\":\"peter\", \"type\":\"bird\"} ] }";
Eclipse有一个选项" 在粘贴到字符串文字时转义文本" (Preferences->Java->Editor->Typing
)将多行文本复制粘贴到字符串文字中将导致引用新行。请注意,启用此功能后,您仍然必须先写两个引号,然后将文本粘贴到这些标记内。
添加代码示例以解析您的json数据。
package com.stackoverflow.answer;
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonParserExample {
public static void main(String[] args) {
String message = "{ \"animal\" : [{\"name\":\"alice\", \"type\":\"cat\"}, {\"name\":\"john\", \"type\":\"dog\"}, {\"name\":\"peter\", \"type\":\"bird\"} ] }";
JSONObject messageJson = new JSONObject(message);
JSONArray animals = messageJson.getJSONArray("animal");
int n = animals.length();
for (int i = 0; i < n; ++i) {
JSONObject animal = animals.getJSONObject(i);
System.out.println(String.format("animal.%d.name: %s", i, animal.getString("name")));
System.out.println(String.format("animal.%d.type: %s", i, animal.getString("type")));
}
}
}
希望你现在清楚。太晚了。我要去睡觉了。快乐的编码!!!