我应该如何使用其中的一些对象初始化数组?

时间:2015-10-18 18:41:23

标签: java json

我想用数组中的两个对象创建一个JSON数据

String message = "{ "animal" : [{"name":"alice", "type":"cat"}, {"name":"john", "type":"dog"}, {"name":"peter", "type":"bird"} ] }";

但这会产生一些错误,无法在eclipse中运行

我该如何解决?

1 个答案:

答案 0 :(得分:1)

你必须使用反斜杠转义双引号,如下所示:

String message = "{ \"animal\" : [{\"name\":\"alice\", \"type\":\"cat\"}, {\"name\":\"john\", \"type\":\"dog\"}, {\"name\":\"peter\", \"type\":\"bird\"} ] }";

Eclipse有一个选项" 在粘贴到字符串文字时转义文本" (Preferences->Java->Editor->Typing)将多行文本复制粘贴到字符串文字中将导致引用新行。请注意,启用此功能后,您仍然必须先写两个引号,然后将文本粘贴到这些标记内。

enter image description here

添加代码示例以解析您的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")));
        }
    }

}

希望你现在清楚。太晚了。我要去睡觉了。快乐的编码!!!