簡體   English   中英

Java中帶一些特殊字符的字符串到Map的轉換

[英]Conversion of String into Map in Java With Some Special Characters

我正在嘗試將字符串轉換為 Java Map 但得到以下異常

com.google.gson.stream.MalformedJsonException

這是我試圖 Map 的字符串。

String myString = "{name=Nikhil Gupta,age=23,location=234Niwas@res=34}"
Map innerMap = new Gson().fromJson(myString,Map.class);

我理解這里的主要問題是由於這些特殊字符,我收到了這個錯誤。 如果我刪除這些空格和特殊字符,那么它會正常工作。

有沒有辦法在不刪除這些空格和特殊字符的情況下做到這一點?

迄今為止使用的方法。

將這些帶有特殊字符的字符串用單引號括起來。

String myString = "{name='Nikhil Gupta',age='23',location='234Niwas@res=34'}"

但這是我不想在生產環境中使用的東西,因為它不適用於嵌套結構。

在 java 中是否有一些真正的方法來解決這個問題?

我理解這里的主要問題是由於這些特殊字符,我收到了這個錯誤。

不,這不是因為“特殊字符”(無論這意味着什么)。

{name=Nikhil Gupta,age=23,location=234Niwas@res=34}

您要解析的字符串根本不是 JSON 格式,而是表面上類似於 JSON 的其他格式。 通過將值括在單引號中的修復仍然不能使它成為 JSON。

如果它是有效的 JSON,它將如下所示:

{"name":"Nikhil Gupta","age":23,"location":"234Niwas@res=34"}

與您原來的顯着差異:

  • 鍵必須用雙引號括起來
  • 字符串值必須用雙引號括起來(數字值不需要)
  • 鍵和值必須用冒號分隔:而不是等號=

解決方法:

  • 使用實際的 JSON 格式; 有關規范,請參見json.org
  • 如果你不能讓它成為真正的 JSON 並且你必須絕對使用你正在使用的格式,那么你需要為這個自定義的非 JSON 格式編寫自己的解析器

暫無
暫無

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

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