Gson没有获得完整的字符串值

时间:2017-10-03 12:35:04

标签: java android json web-services gson

我想从这个json响应中获取键"FullName"的值:

{
    "Succeeded": true,
    "DebugError": "",
    "SystemUser": {
        "ID": 94,
         "FullName": "John Smith",
        "Email": "abcd@gmail.com",
        "PhoneNumber": "0000000000",
        "Country": "USA"
    } 
} 

onResponse方法中我做了这个:

// code..

  @Override
  public void onResponse(JSONObject response) {  
    Gson gson = new Gson();               
    JsonReader reader = new JsonReader(new StringReader(response.getJSONObject("SystemUser").get("FullName").toString()));
    reader.setLenient(true);
    String name = gson.fromJson(reader, String.class);

    Log.i(  " name: ", name + "");
    // I tried to use    getString("FullName")   but shows the same result.

  }

// code..

Logcat中的值=>的 name: John

为什么不打印全名(John Smith)??

2 个答案:

答案 0 :(得分:1)

好像你的GSON实现是多余的。只需使用

response.getJSONObject("SystemUser").getString("FullName")

答案 1 :(得分:0)

不是以这种方式进行,而是可以采用更好的方法。大多数应用程序都有复杂的json结构,但这种方法并不可行。

通过将样本json粘贴到jsonschema2pojo来创建模型类。现在选择目标语言:Java,注释样式:Gson

下载或复制粘贴生成的模型类并使用以下内容(假设您的班级名称为UserDetails)。

UserDetails userDetails = gson.fromJson(response.toString(), UserDetails.class);

现在您已使用所有值填充模型类。检索你想要的。

注意: 变量名和内部类名应与JSON结构完全相同。更好地使用注释。否则模型类将无法正确填充