GSON解析器类JSON响应 - Android电子 [英] Gson parser class for Json response - Android

查看:135
本文介绍了GSON解析器类JSON响应 - Android电子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经得到了回应像下面,

i've got response like below,

有时语言标记配备了数组值

Sometime the language tag come with array value

{
    "name": "Tony",
    "id":"123",
    "language":["en","fr" ]
}

对于一些用户的语言值配备字符串值。

for some user the language value come with string value.

{
    "name": "Max",
    "id":"124",
    "language":"en"
}

如何创建解析器类使用GSON解析JSON响应?

How to create parser class to parse the json response using GSON?

推荐答案

这可能不是直接的答案,但你可以的处理/实现此使用的杰克逊分析器没有任何尝试捕捉。通过设置 objectmapper 属性。

This might not be direct answer, but you can handle/achieve this using Jackson Parser without any try catch. By setting objectmapper properties.

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

很少有其他对象映射器,你应该consiter设置,

Few other object mappers you should consiter setting,

objectMapper.setSerializationInclusion(Include.NON_NULL);
objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

GetDetails.java

package com.domain.project;

import java.util.List;

public class GetDetails{
    private String id;
    private List<String> language;
    private String name;

    public String getId(){
        return this.id;
    }
    public void setId(String id){
        this.id = id;
    }
    public List<String> getLanguage(){
        return this.language;
    }
    public void setLanguage(List<String> language){
        this.language = language;
    }
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }
}

通作解析响应。

GetDetails mDetails = objectMapper.readValue(响应,GetDetails.class)

要获取值。

String mName = mDetails.getName(); // Name
String id = mDetails.getId(); // ID

// Language 
int mLangSize = mDetails.getLanguage().size();
for (int i = 0; i < mLangSize; i++) {
    System.out.println("\nLang : " +  mDetails.getLanguage().get(i).toString());
}

以上都接受的阵列和放大器;字符串中的语言的关键。

{
    "name": "Tony",
    "id":"123",
    "language":["en","fr" ]
}

{
    "name": "Tony",
    "id":"123",
    "language":"en"
}

最后一个小技巧,使用 http://jsongen.byingtondesign.com/ 生成POJO类,当有内部进行一些修改数组的数组,你可以在一瞬间你POJO类。

Finally a small tip, Use http://jsongen.byingtondesign.com/ to generate pojo classes, when there is an array inside array with few modifications, you can get all you pojo classes in a flash.

这篇关于GSON解析器类JSON响应 - Android电子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆