簡體   English   中英

轉換地圖 <String, Object> 從JSON

[英]Convert Map<String, Object> from JSON

我目前正在編寫一個基於Spring的Web服務應用程序,該服務調用的結果應該使用相當普通的類ActionReply發送。 此類包含一個private Map<String, Object> parameters = new HashMap<>(); 從數據庫檢索到的對象可以存儲在哪里。 現在,該值實際上可以是任何類型的類,但主要是我的基類BaseObject的子類。 我現在面臨的問題是,當我嘗試獲取存儲在該地圖中的Locale對象作為值時,返回的JSON字符串如下所示:

reply: <200,{"parameters":{"DATA":["de_DE"]},"successful":true,"errorMessage":null,"subsequentContext":null},{Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Sun, 09 Dec 2018 13:15:21 GMT]}>So 

因此基本上可以,但是將語言環境對象解釋為String,這看起來很正常,因為JSON字符串中沒有有關Locale類的信息。 所以我的問題是,當從/到創建了Locale對象而不是String對象的Map進行創建時,如何傳遞該信息或該怎么辦?

謝謝!

也許我沒有正確地關注您,但是如果您在字符串上獲取語言環境並且想要語言環境對象,則必須執行以下操作:

Locale myLocale = new Locale(myRetrievedLocaleString);

另一方面,似乎您沒有獲得有效的JSON對象,但是,如果僅需要locale且無法提取它,則可以執行以下操作:

String jsonLocale = response.substring(0,32) + "}";

這樣,您將在String上獲得有效的json,現在您可以將其成功轉換為JSON對象並提取語言環境對象。

我找到了基於JSONPath的解決方案:

<dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.3.0</version>
    </dependency>

以下代碼段對我來說很好用:

public static Object extractParametersData(Type type, String json)
{
    Gson gson = new Gson();
    HashMap<String, JSONArray> data = JsonPath.read(json, "$.parameters");

    return gson.fromJson(String.valueOf(data.get("DATA")), type);
}

暫無
暫無

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

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