使用 gson 解析成 POJO 时,Json 总是返回 null

     2023-04-19     61

关键词:

【中文标题】使用 gson 解析成 POJO 时,Json 总是返回 null【英文标题】:Json always returns null when parsing into POJO with gson 【发布时间】:2021-06-02 15:18:27 【问题描述】:

我有一个 Jackson 服务器,可以将 Service 对象解析为 JSON,然后将其发送到 Android。在 Android 中,我有相同的 Service 类,但 gson 总是返回一个空对象。

服务类:

public class Service 
    public String ServiceName;
    public ArrayList<String> ParamList;
    public ArrayList<String> ParamType;

    public Service(String sn,ArrayList<String> pl,ArrayList<String> pt) 
        this.ServiceName = sn;
        this.ParamList = pl;
        this.ParamType = pt;
        // TODO Auto-generated constructor stub
    

JSON 字符串:

"ParamList":[],"ParamType":[],"ServiceName":"ServiceX"

安卓代码:

gson.fromJson(response,Client.Service.class)

Json 字符串来自日志,所以我知道服务器工作正常。在 Gradle 的模块路径中添加依赖:

    implementation 'com.google.code.gson:gson:2.8.6'

【问题讨论】:

在将response 传递给fromJson 之前,您是否确定您的response 不为空或null? 【参考方案1】:

这个测试代码没有任何问题:

public class Main 
    public static void main(String[] args) 
        Service service = new Gson().fromJson(
                "\"ParamList\":[],\"ParamType\":[],\"ServiceName\":\"ServiceX\"",
                Main.Service.class
                );
        
        System.out.println(service.ServiceName);
    
    
    public static class Service 
        public String ServiceName;
        public List<String> ParamList;
        public List<String> ParamType;

        public Service(String sn, List<String> pl, List<String> pt) 
            this.ServiceName = sn;
            this.ParamList = pl;
            this.ParamType = pt;
        
    

所以,我认为你应该寻求 Gson 本身以外的任何其他原因。

【讨论】:

这是 Android Studio 的环境问题。重新构建项目并再次添加依赖项,它工作了

使用改造将不一致的 JSON 解析为 POJO

】使用改造将不一致的JSON解析为POJO【英文标题】:ParseinconsistentJSONtoPOJOusingretrofit【发布时间】:2020-11-1621:42:54【问题描述】:我有一个JSON响应,其中包含多个JSON对象。有时这些JsonObject包含数据,有时这些JsonObject包含一个空... 查看详情

使用gson解析json

前边的博客说过将json解析成java的方法,使用的是这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决,前两天突然想起来,就去网上找些解... 查看详情

在使用 GSON 解析 JSON 时使用枚举

】在使用GSON解析JSON时使用枚举【英文标题】:UsingEnumswhileparsingJSONwithGSON【发布时间】:2012-01-0222:07:38【问题描述】:这与我之前在这里提出的一个问题有关JSONparsingusingGson我正在尝试解析相同的JSON,但现在我稍微更改了我的类... 查看详情

在使用 GSON 解析 JSON 时使用枚举

】在使用GSON解析JSON时使用枚举【英文标题】:UsingEnumswhileparsingJSONwithGSON【发布时间】:2020-01-2711:22:39【问题描述】:这与我之前在这里提出的一个问题有关JSONparsingusingGson我正在尝试解析相同的JSON,但现在我稍微更改了我的类... 查看详情

@serializedname注解

...就不详细说明了,网上一大把的例子,我这里主要说一下使用@SerializedName进行注解的情况。  使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面。然后我们经常会遇到我们自己定义的ja... 查看详情

gson解析json字符串(代码片段)

Gson怎样使用gson把一个json字符串解析成一个jsonObject对象因此我要把上面的fastjson转换成是gson,如下图:JsonObjectobject=newJsonParser().parse(result).getAsJsonObject();怎样从gson中取出键的值使用gson把json字符串转换成一个list集合Lis... 查看详情

gson解析json字符串(代码片段)

Gson怎样使用gson把一个json字符串解析成一个jsonObject对象因此我要把上面的fastjson转换成是gson,如下图:JsonObjectobject=newJsonParser().parse(result).getAsJsonObject();怎样从gson中取出键的值使用gson把json字符串转换成一个list集合Lis... 查看详情

设置 minifyEnabled 为 true 时无法使用 GSON 解析 json 对象

】设置minifyEnabled为true时无法使用GSON解析json对象【英文标题】:CannotparsejsonobjectswithGSONwhensettingminifyEnabledistrue【发布时间】:2020-11-1021:01:57【问题描述】:当我使用时buildTypesreleaseminifyEnabledfalseproguardFilesgetDefaultProguardFile(\'progu 查看详情

java示例代码_使用GSON解析JSON时出错,以及如何访问JSON的内部元素

java示例代码_使用GSON解析JSON时出错,以及如何访问JSON的内部元素 查看详情

如何使用改造和 gson 异步解析 json

】如何使用改造和gson异步解析json【英文标题】:Howtoparsejsonwithretrofitandgsonasynchronously【发布时间】:2016-08-2310:45:35【问题描述】:我有1个请求,可以得到2个不同的响应:登录名和密码正确时:"token":"token..","expires":"2016-04-28T10:46... 查看详情

json2:使用gson解析为list和map

importjava.lang.reflect.Type;importjava.util.List;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;publicclassJson解析成List{publicstaticvoidmain(String[]args){StringBuildersb=newString 查看详情

gson迁移到jackson

概述gson和jackson在使用上是很相似的,不论是直接和POJO互相转换,还是逐个属性解析Json文本,基本上没有什么差别。但是由于对属性名解析策略上有所不同,在遇到isXxx或者hasXxx形式的getter方法时就有差别了。对... 查看详情

使用 Gson 解析后将嵌套的 JSON 数组插入 SQLite

】使用Gson解析后将嵌套的JSON数组插入SQLite【英文标题】:InsertanestedJSONarrayintoSQLiteafterparsingwithGson【发布时间】:2020-03-0411:48:12【问题描述】:使用Gson解析嵌套的JSON数组后,我现在需要将结果插入SQLite。我尝试在不使用Gson解析... 查看详情

android解析json-gson使用(代码片段)

...c;我们需要解析json然后找到我们想要的值。直接讲解如何使用这个第三方库。一、安装依赖implementation'com.google.code.gson:gson:2.8.6'二、基础用法1、创建实体类Android前端需要创建一个实体类,与后端传递过来的jso 查看详情

gson全解析(上)-gson基础

前言最近在研究Retrofit中使用的Gson的时候,发现对Gson的一些深层次的概念和使用比较模糊,所以这里做一个知识点的归纳整理。Gson(又称GoogleGson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符... 查看详情

使用gson解析,生成json

包:gson-2.3.jarJson文本解析为Java对象;Java对象生成为Json文本importcom.google.gson.Gson;publicclassTestGson{ classPerson{ privateStringname; privateint[]power; privateHorsehs1; privateHorse[]hs2; publicHorsegetH 查看详情

如何在 Retrofit 库中将 YAML 响应正文解析为 POJO?

】如何在Retrofit库中将YAML响应正文解析为POJO?【英文标题】:HowtoparseYAMLresponsebodytoPOJOinRetrofitlibrary?【发布时间】:2021-12-1915:04:35【问题描述】:我在Retrofit中处理YAML格式的响应时遇到问题。到目前为止,我只处理JSON格式或纯... 查看详情

最佳实践 - Json 解析中的字符串与 InputStream(使用 gson)

】最佳实践-Json解析中的字符串与InputStream(使用gson)【英文标题】:BestPractice-StringvsInputStreaminJsonParsing(usinggson)【发布时间】:2012-05-3104:11:09【问题描述】:在阅读有关Json/Gson的教程时,我注意到大多数人更喜欢将文件作为字... 查看详情