无法从 json 中读取 URL 字符串并将其应用于 Android 中的对象

罗曼·科津

我正在构建一个应用程序并有一个User对象:

public class User {
    private Integer id = null;
    private String username = null;
    private String password = null;
    private String first_name = null;
    private String last_name = null;
    private String email = null;
    private String phone = null;
    private String avatar = null;
    private String role = null;
    private Boolean confirmed = null;
    private Boolean active = null;
    private String created_at = null;
    private String updated_at = null;
    private String sex = null;
    private Object company = null;
}

这个对象(类)包含 setter 和 getter。当授权响应到来时 - 我正在使用下一个回调处理它:

public void onResponse(Call<ApiResponse> call, Response<ApiResponse> response) {
                ApiResponse apiResponse = response.body();

                Log.i("log_i", apiResponse.getData().toString());

                JsonReader jsonResponse = new JsonReader(new StringReader(apiResponse.getData().toString()));
                jsonResponse.setLenient(true);

                try {
                    User user = new Gson().fromJson(jsonResponse, User.class);
                    Log.i("log_i", user.toString());
                    Toast.makeText(context, apiResponse.getMessage(), Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    Log.i("log_i", e.getMessage());
                    Toast.makeText(context, "Failed to authorize in case of application exception.", Toast.LENGTH_SHORT).show();
                }
            }

在 try{} 之后进入 FIRT 行之后 - 它崩溃了,下一个错误是日志中的 apperas:

I/log_i: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 147 path $.avatar

记录的 JSON:

{
    id=4,
    username=admin,
    first_name=Test,
    last_name=User,
    [email protected],
    phone=012.345.678,
    confirmed=true,
    active=true,
    avatar=https://path/to/avatar.png,
    role=admin,
    created_at=2017-02-24T14: 22: 50+00: 00,
    updated_at=null,
    company_id=2.0,
    sex=m,
    company={
        id=2.0,
        title=companyTitle,
        active=true,
        created_at=2017-02-24T14: 22: 50+00: 00,
        updated_at=null,
        deleted_at=2017-02-24T14: 22: 50+00: 00
    }
}

任何帮助将不胜感激。因为我正在尝试解决这个问题

更新 1

在下一行我收到错误:

User user = new Gson().fromJson(jsonResponse, User.class);
罗曼·科津

问题已经解决。我的下一步行动是: Instad 声明:

User user = new Gson().fromJson(jsonResponse, User.class);

我应该声明:

user = (User) apiUserResponse.getData();
// or
User user = (User) apiUserResponse.getData();

在其他情况下,您的 JSON 将被读取为格式错误并抛出异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用url中的json从json字符串创建对象并将其插入html

无法在android TextView中打印JSON对象字符串

无法从url访问JSON中的对象

从资源中读取json文件并将其转换为JAVA中的json字符串

在javascript中获取JSON对象的对象名称并将其存储在字符串数组中

Apex (Salesforce) 从响应中读取 json 并将其存储在字符串变量中

无法读取sqlite数据并将其与python中的字符串进行比较

收到错误:Route中的Route()无法应用于字符串

如何在JSON对象中添加URL字符串

如何从字符串中获取值并将其表示为javascript中的json对象

在android中读取Json

无法从控制台应用程序中的appsettings.json中读取连接字符串

在 Asp.Net 核心应用程序中,无法从 json 文件中读取连接字符串?

从json字符串中提取对象数组,并将其放入ArrayList中?

android中的url JSON

无法访问最初作为 JSON 对象发送的字符串(即 [对象对象])中的数据

android json对象字符串显示在textview中

无法在TemplateView中读取json

无法读取Node.JS中的嵌套JSON对象

无法在Node.js中读取JSON对象值?

如何从URL列表中读取json数据并将其整理到数据框中?

无法将ruby变量插值到字符串url中以调用JSON API

如何记录在 python 中对一个字符串使用排序时发生的历史,并将其应用于其他字符串?

无法读取在local.settings.json中定义的连接字符串

如何在Java或android中将URL中存在的JSON数据转换为JSON字符串?

如何从 json 对象中提取特定字段并将其存储在 node.js 中的字符串中

在Android中读取JSON数组

在Android中读取Json数组

在Android中读取json文件