簡體   English   中英

在 Groovy 上使用 JSON 響應並使用響應填充 Map

[英]Working with JSON Response on Groovy and populating a Map with the response

我正在使用 groovy(使用 HttpResponse - Unirest)向 URL 發出 POST 請求,並將響應作為 JSONObject 檢索。

接下來,我使用該響應創建一個 Map,使用:

Map<String, Object> myMap = new HashMap<>(response.toMap())

我的 JSON 響應是這樣的(對不起,看起來很奇怪,但我不得不刪掉明智的信息):

{
    "responses": [
        {
            "took": 123,
            "timed_out": true,
            },
            "hits": {
                "total": 123,
                "max_score": null,
                "hits": [
                    {
                        "_source": {
                            "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum payloadType=JSONpayload=[{"some json payload here"}]
                }
            }
        ]
    ]
}

}

我對此有兩個問題:

1 - 當我嘗試打印鍵和值時,鍵是“響應”,所有其他部分都是值。 這是正常的嗎? 我也不能使用 put function 將值添加到 map。 這意味着,我的 map 目前有點時髦,我似乎找不到解決方案。 我應該使用另一個庫嗎? 我不介意使用另一個,我只需要找到一種方法來擁有我可以使用的 map。

2 - 我需要將我的 map 值修剪為僅在特定字符串之后顯示結果,在這種情況下,我需要使用 Z0ECD11C1D7A287401D1D7A287401D1D7A287401D1D7A287401D1D7A287401D1D7A287401D148A23 和 JSONpayload 將其存儲在“BBD7A2F8Z 有效負載”之后然后使用該信息。 我怎樣才能做到這一點? 正則表達式是否足以實現它? 我正在考慮使用迭代器來遍歷所有值,然后將它們修剪為變量。 對於這種情況,這是一個很好的解決方案嗎?

抱歉,如果有什么令人困惑的地方,但我仍然是 Java 和 Groovy 的新手,這是我在項目中的第一個任務。

謝謝!

您可以 map 您的響應不是對 Map,而是對您自定義創建的 object 的響應,稱為 POJO。 接下來,使用庫 Jackon 或 Gson 解析此 Json。 最后,您可以訪問 Json 中的每個值,例如使用正則表達式,從特定字段中提取某些數據。 這種方法是長期的方法,易於測試和維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM