【问题标题】:java.lang.IllegalStateException error messagejava.lang.IllegalStateException 错误信息
【发布时间】:2016-10-06 10:40:03
【问题描述】:

我正在使用 Eclipse 将 json 转换为 Java 中的字符串。但我不断收到:

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 很陌生,如果我错过了我应该包括的任何细节,我很抱歉。

【问题讨论】:

标签: java json


【解决方案1】:

您使用单引号作为 json 标识符。使用双引号。

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

错误是因为你的 json 代码格式错误,那些单引号虽然在 Java 中很方便,但对 json 无效。

【讨论】:

  • 我为我的 json 使用了这种格式,现在它在 [link](www.jsonlint.com) 上有效,这也意味着我的程序可以工作。谢谢!
【解决方案2】:

你经常会遇到使用单引号而不是双引号的问题

 {
    "$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 方面非常棒

【讨论】:

    【解决方案3】:

    您可能想使用如下所示的更改。数组的处理存在问题。

    {
    '$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

    【讨论】:

    • 括号是用来引用的,因为它被格式化为一个java变量。您可能还想确保您的文件括号包含在代码块中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2018-07-18
    • 2017-02-19
    • 2011-06-14
    • 2013-05-30
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多