[英]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.