如何使用特定的jsonfromat构建JsonObject

时间:2013-12-11 13:58:32

标签: java json jsonobject

我正在尝试从我的java代码访问API。 API只接受JSON对象形式的数据,但我在构建JsonObject表示时遇到问题。

我想要做的是使用createObjectBuilder()创建格式如下的JsonObject

{
    "user1234@gmail.com": {
        "username" : "user1234@gmail.com",
        "password" : "password1",
        "service" : [ "yourkit" ]
    }
}

我试过了:

JSONObject jsonObject = (JSONObject)Json.createObjectBuilder()
                            .add(
                                username,
                                Json.createObjectBuilder()
                                    .add("username", username)
                                    .add("password", password)
                                    .add("service", service)
                            ).build();

p.setEntity(new StringEntity(jsonObject.toString(), "UTF-8")); 
HttpResponse r = c.execute(p);

但它没有向API发送正确的请求。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

要实现您想要的格式,变量 service 必须是字符串数组。

答案 1 :(得分:1)

您缺少服务属性的数组:

JSONObject jsonObject = (JSONObject)Json.createObjectBuilder()
                        .add(
                            username,
                            Json.createObjectBuilder()
                                .add("username", username)
                                .add("password", password)
                                .add("service",
                                    Json.createArrayBuilder()
                                      .add(service)
                                )
                        ).build();