如何形成json对象

我想使用 JsonObect 转换以下 JSON,JsonArray但无法这样做。


{

  "query": {

    "bool": {

      "must": [

        {

          "match": {

            "customer.partnerName": "Synapse"

          }

        },

        {

          "range": {

            "customer.billing.chargeAmount": {

              "gte": 1,

              "lte": 100

            }

          }

        }

      ],

      "filter": [

        {

          "match": {

            "customer.configId": 15

          }

        }

      ]

    }

  }

}

我尝试过使用JsonObject但无法达到结果。


慕少森
浏览 134回答 5
5回答

繁花不似锦

这只是将 json 字符串简单地复制/粘贴到 AndroidStudio 中,它会自动分割字符串并添加转义斜杠。它看起来很糟糕,但你编写的语法完全没问题。    String jsonString = " {\n" +            "                        \"query\": {\n" +            "                        \"bool\": {\n" +            "                            \"must\": [\n" +            "                                    {\"match\": \n" +            "            { \"customer.partnerName\":   \"Synapse\"  }},\n" +            "\n" +            "                                    {\n" +            "\"range\" : \n" +            "{\n" +            "                                        \"customer.billing.chargeAmount\" : {\n" +            "                                            \"gte\" : 1,\n" +            "                                            \"lte\" : 100\n" +            "                                        }\n" +            "                                    }}\n" +            "                            ],\n" +            "                            \"filter\": [\n" +            "                                    { \"match\":  { \"customer.configId\": 15 }}\n" +            "                            ]\n" +            "                        }\n" +            "                    }\n" +            "                    }";    // HERE BEAUTIFIED    /*jsonString = "{\"query\":{\"bool\":{\"must\":[{\"match\":{\"customer.partnerName\":\"Synapse\"}},{\"range\":{\"customer.billing.chargeAmount\":{\"gte\":1,\"lte\":100}}}],\"filter\":[{\"match\":{\"customer.configId\":15}}]}}}";     */    try {        JSONObject object = new JSONObject(jsonString);        // NO ERRORS, OBJECT CREATED IN MY CASE    } catch (JSONException e) {        e.printStackTrace();    }您拥有的第二个选项是以编程方式创建对象、内部对象和数组..就像这样..    try {        JSONObject jsonObject = new JSONObject();        JSONObject query = new JSONObject();        jsonObject.put("query", query);        JSONObject bool = new JSONObject();        query.put("bool", bool);        JSONArray must = new JSONArray();        bool.put("must", must);        JSONObject matchWrap = new JSONObject();        JSONObject match = new JSONObject();        match.put("customer.partnerName", "Synapse");        matchWrap.put("match", match);        must.put(matchWrap);        JSONObject rangeWrap = new JSONObject();        JSONObject range = new JSONObject();        JSONObject customerBillingChargeAmount = new JSONObject();        customerBillingChargeAmount.put("gte", 1);        customerBillingChargeAmount.put("lte", 100);        range.put("customer.billing.chargeAmount", customerBillingChargeAmount);        rangeWrap.put("range", range);        must.put(rangeWrap);        JSONArray filter = new JSONArray();        bool.put("filter", filter);        JSONObject match2Wrap = new JSONObject();        JSONObject match2 = new JSONObject();        match2.put("customer.configId", 15);        match2Wrap.put("match", match2);        filter.put(match2Wrap);        String jsonString2 = jsonObject.toString();        // HERE THE SAME JSON STRING AS YOUR INPUT    } catch (JSONException e) {        e.printStackTrace();    }当删除空格、制表符、换行符等时,这会产生与输入字符串相同的结果。

慕慕森

我认为你正在寻找的是 json 解析。这是通过以下方式完成的:JsonParser parser = new JsonParser();JsonObject object = (JsonObject) parser.parse(jsonData); //Insert json string data//Do other stuff

万千封印

所以,我想说你应该使用 JsonPath lib 来做到这一点。        <dependency>            <groupId>com.jayway.jsonpath</groupId>            <artifactId>json-path</artifactId>            <version>2.4.0</version>        </dependency>使用示例import com.jayway.jsonpath.DocumentContext;import com.jayway.jsonpath.JsonPath;...public void handle(...) {...  DocumentContext jsonContext = JsonPath.parse(responseBody);  JSONArray jsonPathPreviousUrl = jsonContext.read("$..previous")...这将快速有效地解析您的 json。{  "feed": {    "data": [      {        "created_time": "2017-12-12T01:24:21+0000",        "message": "This picture of my grandson with Santa",        "id": ""      },      {        "created_time": "",        "message": "",        "id": ""      },      {        "created_time": "",        "message": "",        "id": ""      }    ],    "paging": {      "previous": "https://facebook/v3.2/{your-user-id}/feed?format=json&limit=3&since=1542820440",      "next": "https://facebook/v3.2/{your-user-id}/feed?format=json&limit=3&until=1542583212&"    }  },  "id": "{your-user-id}"}}

白猪掌柜的

<script>var txt = '{"query": {"bool": {"must": [{"match": { "customer.partnerName":&nbsp; &nbsp;"Synapse"&nbsp; }},{"range" : {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "customer.billing.chargeAmount" : {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "gte" : 1,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "lte" : 100&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }}],"filter": [{ "match":&nbsp; { "customer.configId": 15 }}]}}}'var obj = JSON.parse(txt);debugger;document.getElementById("demo").innerHTML = obj.query;</script>

互换的青春

您尝试过 Google gson 吗?这是 repo,你也可以在网上找到相关的实现。&nbsp;https://github.com/google/gson
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java