Как извлечь объект JSON, который имеет "(цитата) в значении? (Java / GSon) - PullRequest
1 голос
/ 01 марта 2012

Я использую 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.

Спасибо!

Robbie

Ответы [ 3 ]

3 голосов
/ 01 марта 2012

Основной ответ - правильно его кодировать. Смотрите строковую диаграмму (4-е) на http://www.json.org/, чтобы узнать, как вам разрешено кодировать или, в качестве альтернативы, проверять свой json на http://jsonlint.com.

Ваша строка должна быть

{
   "SkuID": "2040",
   "CheckDigit": "8",
   "StockNumber": "2040-8",
   "ProductName": "SalesReceiptBook(1)8\"x4\"(50)(3-PartNCR)",
   "YourCost": "4.45",
   "Points": "0.00",
   "IsKosher": "False"
}
2 голосов
/ 01 марта 2012

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"
}

ВВ будущем вы можете легко проверить, является ли JSON действительным, используя этот онлайн-валидатор http://jsonlint.com/

0 голосов
/ 12 июля 2013

Gson не должен делать это по умолчанию, он должен экранировать «с собой для вас». Если тип данных для ProductName не является прямой строкой, это может быть частью вашей проблемы при сериализации объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...