在Java中拼接两个JSON对象

3

我希望能够连接多个JSON对象。

我有两个像这样的JSON:

{"message":"test","status":"0"}

并且这个

{"message":"test-2","status":"1"}

结果必须是:

[{"message":"test","status":"0"},{"message":"test-2","status":"1"}]

我该如何在Java中实现这个功能?

你想要合并JSON对象中的值,还是想要创建它们的数组? 你可以在SO上参考另一个链接:https://dev59.com/3HE95IYBdhLWcg3wOLQ1 - Mandar Pandit
我无法使用concat与JSON对象。我想要创建它们的数组。 - Tolgay Toklar
1
你想将它们处理为 String 还是 JSONObjectJSONArray 中? - user1907906
我想将它们处理为字符串。 - Tolgay Toklar
3个回答

5

你可以轻松地使用JSONObject.toString()并轻松地连接字符串,例如:

String x = "[" + obj1.toString() "," + obj2.toString() + "]";

或者

StringBuilder newStr = new StringBuilder() ;
newStr.append("[").append(obj1.toString()).append(",").append(obj2.toString());

在 obj1.toString() 和 "," 之间漏了一个 +。 - Jiwa Chhetri

3

做如下操作:

List<String> array = new ArrayList<String>();
array.add("{\"message\":\"test\",\"status\":\"0\"}");
array.add("{\"message\":\"test-2\",\"status\":\"1\"}");
array.toString();

如果你想在Java中支持JSON对象,可以考虑使用Gson:

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Main {

    public static void main(String[] args) {
        JsonObject json1 = (JsonObject) new JsonParser().parse("{\"message\":\"test\",\"status\":\"0\"}");
        JsonObject json2 = (JsonObject) new JsonParser().parse("{\"message\":\"test-2\",\"status\":\"1\"}");
        JsonArray array = new JsonArray();
        array.add(json1);
        array.add(json2);
        System.out.println(array.toString());
    }
}

这次使用对象会给您想要的内容。

3
1.5版本之前不允许使用泛型,那又怎样?! - shlomi33
它已经固定了,但我还有一个问题,我必须使用这个add方法与jsonobject一起使用。但是add方法只接受字符串值。我该怎么办? - Tolgay Toklar
我正在使用Java的socket.io,并且socket事件返回JSONObject作为JSON数据。 - Tolgay Toklar
我遇到了这个错误:JsonParser 类型中的 parse(String) 方法不适用于 jsonparser 方法的参数 (JSONObject)。 - Tolgay Toklar
让我们在聊天中继续这个讨论。 (http://chat.stackoverflow.com/rooms/58871/discussion-between-shlomi33-and-tolgay-toklar) - shlomi33
显示剩余3条评论

0
private static void concatJSON() throws IOException, InterruptedException {

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader(new File(Main.class.getResource("/file/user.json").toURI())));

JSONObject jsonObj = (JSONObject) obj; //usernameJsonObj

String [] values = {"0.9" , Date.from(Calendar.getInstance().toInstant()).toLocaleString()},
        innermost = {"Accomplished", "LatestDate"}, 
        inner = {"Lesson1", "Lesson2", "Lesson3", "Lesson4"};
String in = "Jayvee Villa";

JSONObject jo1 = new JSONObject();
for (int i = 0; i < innermost.length; i++)
    jo1.put(innermost[i], values[i]);

JSONObject jo2 = new JSONObject();
for (int i = 0; i < inner.length; i++)
    jo2.put(inner[i], jo1);

JSONObject jo3 = new JSONObject();
jo3.put(in, jo2);

String merger = jsonObj.toString().substring(0, jsonObj.toString().length()-1) + "," +jo3.toString().substring(1);

System.out.println(merger);
FileWriter pr = new FileWriter(file);
pr.write(merger);
pr.flush();
pr.close();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接