2016-10-06 4 views
0

Я использую Eclipse для скрытого json для строки в Java. Но я продолжаю получать:java.lang.IllegalStateException сообщение об ошибке

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException 

сообщение об ошибке каждый раз, когда я пытаюсь запустить свою программу. Eclipse не распознает ошибки или ошибки с моим кодом. Я провел некоторое исследование, и кажется, что мой json недействителен (я использовал JSONLint).

Это мой JSON:

String json =  
"{" 
       +"'$type': 'Tfl.Api.Presentation.Entities.RoadCorridor, Tfl.Api.Presentation.Entities'," 
       + "'id' : a1," 
       + "'displayName' : 'A1'," 
       + "'statusSeverity' : 'Good'," 
       + "'statusSeverityDescription' : 'No Exceptional Delays'," 
       + "'bounds' : '[[-0.25616,51.5319],[-0.10234,51.6562]]'," 
       + "'envelope' : '[[-0.25616,51.5319],[-0.25616,51.6562],[-0.10234,51.6562],[-0.10234,51.5319],[-0.25616,51.5319]]'," 
       + "'url' : 'https://api-argon.tfl.gov.uk/Road/a1'" 
       + "}"; 

Пожалуйста, может кто-то сказать мне, что случилось с JSON и как я могу изменить его так его действительным? Я довольно новичок в java и json, так жаль, что я пропустил какие-то детали, которые я должен был включить.

+3

Попробуйте использовать онлайн-проверки json, такие как http://jsonlint.com/ –

+0

Возможный дубликат [разбора Json File с gson: MalformedJsonException] (http://stackoverflow.com/questions/10073790/parsing-json-file-with-gson -malformedjsonexception) – Joe

+0

@Joe Это технически дубликат, но между разными языками и различными сообщениями об ошибках понятно, что он не был найден. Это будет немного больше в будущем для подобной группы людей. – DonyorM

ответ

3

Вы используете одинарные кавычки для ваших идентификаторов json. Используйте двойные кавычки.

"\"$type\": \"Tfl.Api.Presentation.Entities.RoadCorridor, Tfl.Api.Presentation.Entities\"," + etc. 

Ошибка в том, что ваш код JSON имеет неверный формат, эти одиночные кавычки, в то время как удобно в Java, не действительны для JSON.

+0

Я использовал этот формат для своего json и теперь его действительный на [link] (www.jsonlint.com), и это также означает, что моя программа работает. Спасибо! –

+0

@NS Добро пожаловать! – DonyorM

0

Возможно, вы захотите использовать его как показано ниже. Существует проблема с обработкой массивов.

{ 
'$type': { 
    'Tfl.Api.Presentation.Entities.RoadCorridor, Tfl.Api.Presentation.Entities' 
}, 
'id': a1, 
'displayName': 'A1', 
'statusSeverity': 'Good', 
'statusSeverityDescription': 'No Exceptional Delays', 
'bounds': '[[-0.25616,51.5319],[-0.10234,51.6562]]', 
'envelope': '[[-0.25616,51.5319],[-0.25616,51.6562],[-0.10234,51.6562],[-0.10234,51.5319],[-0.25616,51.5319]]', 
'url': 'https://api-argon.tfl.gov.uk/Road/a1' 

}

см здесь - http://www.w3schools.com/js/js_json_intro.asp

+0

скобки предназначены для цитирования, поскольку они форматируются как переменная java. Вероятно, вы также захотите убедиться, что ваша скобка файла включена в кодовый блок. – DonyorM

3

Вы oftern столкнуться с проблемами, используя одиночные кавычки вместо двойных кавычек

{ 
    "$type": "Tfl.Api.Presentation.Entities.RoadCorridor, Tfl.Api.Presentation.Entities", 
    "id": "a1", 
    "displayName": "A1", 
    "statusSeverity": "Good", 
    "statusSeverityDescription": "No Exceptional Delays", 
    "bounds": "[[-0.25616,51.5319],[-0.10234,51.6562]]", 
    "envelope": "[[-0.25616,51.5319],[-0.25616,51.6562],[-0.10234,51.6562],[-0.10234,51.5319],[-0.25616,51.5319]]", 
    "url": "https://api-argon.tfl.gov.uk/Road/a1" 
} 

вот ваш JSON в настоящее время действует, для справки я найти, что jsonlint.com является фантастическим при помощи отладки недействительных json

Смежные вопросы