当前位置: 首页 > 知识库问答 >
问题:

java.lang.IllegalState异常:预期BEGIN_OBJECT但在第1行列处是STRING

苍元章
2023-03-14

我正在学习烤肉,但在尝试时遇到了一个问题。发现了很多类似的问题和更多的解决方案,但没有任何帮助

这是我的错

{
  "firstName": "name",
  "lastName": "last",
  "resistances": {
    "a1": 1,
    "a2": 2,
    "a3": 3,
    "a4": 4
  }
}

游戏者班

class Player implements Serializable{

    String firstName;
    String lastName;
    int[] resistances;

    public Player(String firstName, String lastName, int[] resistances) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.resistances = resistances;
    }
}

以及我是如何尝试着

Gson gson = new Gson();
Player player = gson.fromJson("test.json", Player.class);

紧急求救信号

共有2个答案

奚正谊
2023-03-14

您的JSON“电阻”对象应该看起来像这样,以便您的解析代码能够工作:

{
  "firstName": "name",
  "lastName": "last",
  "resistances": [
    1, 2, 3, 4
  ]
}

或者,将Java中的电阻变量更改为映射。在这里寻找之前的答案——GSON可以将dictionary JSON对象解析为映射。

class Player implements Serializable {

    String firstName;
    String lastName;
    Map<String, Integer> resistances;

    public Player(String firstName, String lastName, Map<String, Integer> resistances) {
        this.firstName   = firstName;
        this.lastName    = lastName;
        this.resistances = resistances;
    }
}
凌修伟
2023-03-14

fromJson(String,Class)解析字符串本身,在您的例子中是test。json,而不是它所代表的文件。您需要从试图解析的文件中创建一个读取器,并将其作为第一个参数传递。

如果test.json在外部存储

String fpath = Environment.getExternalStorageDirectory() + "/path/to/test.json";
 try {
        FileReader fr = new FileReader(fpath));
        gson.fromJson(fr, Player.class);
} catch (Exception e1) {
        e1.printStackTrace();
}

 类似资料:
  • 我正在开发一个电子学习应用程序。但是我在从JsonObject解析时遇到了一个问题。你能给我一个简单易懂的方法来做这件事吗? {"状态":true,"类别": [ { "category_id":"1","category_name":"印度尼西亚语","category_detail":null,"category_thumbnail":"0" }, { "category_id":"2","c

  • 我收到了firebase函数和dialogflow的响应,其中包含了我进一步实现所需的一些信息。响应是一个JSON,我将其保存在中,它是一个HashMap(字符串,对象)类型的变量。 我搜索过其他类似的线程,但奇怪的是,我的问题出现在第2列,而不是第1列,我在json中没有看到问题。这是gson部分。错误被抛出到带有属性的行上! 这是回应JSON:

  • 问题内容: 我有这种方法: 我想解析一个JSON: 但是我收到一条错误消息: com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但位于第1行第1列 问题答案: 即使没有看到您的JSON字符串,您也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望您的JSON字符串

  • 我正在尝试运行此应用程序,但当我尝试登录时,我在“logcat”中看到此错误。消息“Success Login”表示它已被记录,并且有到数据库的连接,但我不知道在哪里等待对象,在哪里接收字符串。 10-11 14:54:10.481 2532-7430/com.alvardev.demos.limaculturalD/com.alvardev.demos.limacultural.http.Res

  • 问题内容: 我想解析一个JSON: 但是我收到一条错误消息: ,但位于第1行第1列 问题答案: 即使没有看到你的JSON字符串,你也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望你的JSON字符串以对象打开括号开头。例如 但是你传递给它的字符串以开引号开头

  • 我正在尝试通过改造将字符串类型列表发送到mysql数据库。当我尝试使用postman时,我获得了成功,但我收到了来自android studio的错误消息。 我的API接口: 我的响应数据类: Php响应: Android Studio错误消息: OkHttp日志: 我认为问题出在我发布的列表中,因为如果我删除列表,结果是成功的。 怎么了?