【问题标题】:Java - Nested JSON objectsJava - 嵌套的 JSON 对象
【发布时间】:2015-03-03 19:45:49
【问题描述】:

我正在尝试为 XBMC/KODI 创建一个简单的 JAVA 遥控器,我认为到目前为止我做得还不错(还处于早期阶段),但是当我到达一个嵌套的 JSON 对象时遇到了障碍。

这是我正在转换为 JAVA 的原始代码:

{"jsonrpc": "2.0", "method": "Player.PlayPause", "params": { "playerid": 0 }, "id": 1}

到目前为止,我已经在 J​​AVA 中完成了这项工作:

public static void main(String[] args) throws UnknownHostException, IOException{
    JSONObject json = new JSONObject();
    json.put("jsonrpc", "2.0");
    json.put("method", "Player.PlayPause");
    //json.put("params", "playerid = 0"); THIS IS THE LINE I am having issues with
    Socket s = new Socket("192.168.0.21", 8080);
    try (OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream(), StandardCharsets.UTF_8)) {
                out.write(json.toString());
    }}

从原始 JSON 中可以看出,{} 中有一个嵌套的 {},所以 {{}} 我不知道如何处理这个问题。如果这有帮助,我在 Eclipse 中使用 JSON-Simple,感谢您的帮助!

编辑:

所以这很有帮助,谢谢,但它实际上不起作用是语法有什么问题吗:

public static void main(String[] args) throws UnknownHostException, IOException{
    JSONObject json = new JSONObject();
    JSONObject params = new JSONObject();
    json.put("jsonrpc", "2.0");
    json.put("method", "Player.PlayPause");
    params.put("playerid", 0);
    json.put("params", params);
    json.put("id", 1);
    Socket s = new Socket("192.168.0.21", 8080);
    try (OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream(), StandardCharsets.UTF_8)) {
                out.write(json.toString());
    }
}

【问题讨论】:

  • “如你所见” - 我可以吗?
  • 我会这样认为,“params”: {"playerid: 0}, 部分,据我了解它不是 JSON 数组,因为它们有方括号
  • 它是一个 json 对象。而且你已经知道如何处理 json 对象了。
  • 嗯,我没想到会这么简单,谢谢!

标签: json sockets xbmc kodi


【解决方案1】:

为参数创建另一个JSONObject,对其进行设置,然后使用键params 将其添加到父JSONObject

【讨论】:

  • 您好,我已经用另一个与同一件事相关的问题更新了我的问题,您的回答帮助了我解决第一个问题,所以谢谢,但您能看看我的进一步问题吗?
  • 您好,感谢您的回复。老实说,我不知道我还能说些什么。没有错误消息被抛出并且编程开始和终止。但视频不会暂停。
  • 当然可以。问题与构建 json 对象有关吗?还是如果您直接使用正确构建的 json 字符串也会发生这种情况?
  • 是的,当我直接输入字符串并转义语音标记时也会发生这种情况
【解决方案2】:

//导入java.util.ArrayList;

//导入org.bson.Document;

Document root= new Document();

Document rootParams = new Document();


root.append("jsonrpc","2.0");

root.append("method","Player.PlayPause");

rootParams.append("playerid",0);

root.append("id",1);




if (!rootParams.isEmpty()){
root.append("params",rootParams);
}


System.out.println(root.toJson());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-23
    • 2017-12-28
    • 2021-02-15
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多