如何提取在值中具有“(引用)”的JSON对象?(Java / GSon)

时间:2012-03-01 01:52:30

标签: java json gson

我正在使用gson创建Java对象,一切正常,直到我得到以下内容:

{
   "SkuID": "2040",
   "CheckDigit": "8",
   "StockNumber": "2040-8",
   "ProductName": "SalesReceiptBook(1)8"x4"(50)(3-PartNCR)",
   "YourCost": "4.45",
   "Points": "0.00",
   "IsKosher": "False"
},

GSon确定"之前的8作为值的结尾,这会阻止GSon进一步解析,并且我得到一个无效的JSON错误。

谢谢!

罗比

3 个答案:

答案 0 :(得分:3)

基本答案是正确编码。请参阅http://www.json.org/上的字符串图表(第4个),了解如何编码,或者在http://jsonlint.com验证您的json。

你的字符串应该是

{
   "SkuID": "2040",
   "CheckDigit": "8",
   "StockNumber": "2040-8",
   "ProductName": "SalesReceiptBook(1)8\"x4\"(50)(3-PartNCR)",
   "YourCost": "4.45",
   "Points": "0.00",
   "IsKosher": "False"
}

答案 1 :(得分:2)

您发布的JSON无效。

您需要转义ProductName字符串中的“字符”,并且最后还有一个额外的逗号。

{
    "SkuID": "2040",
    "CheckDigit": "8",
    "StockNumber": "2040-8",
    "ProductName": "SalesReceiptBook(1)8\"x4\"(50)(3-PartNCR)",
    "YourCost": "4.45",
    "Points": "0.00",
    "IsKosher": "False"
}

将来您可以使用此在线验证器http://jsonlint.com/轻松检查JSON是否有效

答案 2 :(得分:0)

Gson默认情况下不应这样做,它应该转义为“with a for you,如果ProductName的数据类型不是直字符串,这可能是对象序列化时问题的一部分。