2 zww2016 zww2016 于 2017.08.29 09:47 提问

请求客户接口得到json串后,转换java对象,属性为"_id"接收到的值一直为null

json串的其中一个例子
图片说明
json串要映射的实体(set、get方法都有)
图片说明
图片说明
输出变量为"_id"的语句
图片说明

6个回答

huang931027
huang931027   Rxr 2017.08.29 09:49

额,这个空和你的get Set方法没关系吧?你的代码在实例化对象的时候肯定出错了。

zww2016
zww2016 实例化对象那会debug没有报错
11 个月之前 回复
danee1
danee1   2017.08.29 09:58

按照你的截图 你的 json串是个 json对象 而不是一个 jsonArray 即 json 数组 所以 应该用 JSON.parseObject 方法

package com.ong.bean;

import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class Test {

static class TestBean{
    private String _id;
    private String name;
    /**
     * @return the _id
     */
    public String get_id() {
        return _id;
    }
    /**
     * @param _id the _id to set
     */
    public void set_id(String _id) {
        this._id = _id;
    }
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
}

public static String generateJsonStr(){
    String str = "";
    str = "{'_id':'qqqqqqqwwwwwww','name':'123123123123123'}";
    return str;
}

public static void main(String[] args) {
    String str = generateJsonStr();
    System.out.println("Original str is "+str);
    TestBean testBean = JSON.parseObject(str,TestBean.class);
    System.out.println(testBean.get_id());
}

}

运行结果

Original str is {'_id':'qqqqqqqwwwwwww','name':'123123123123123'}
qqqqqqqwwwwwww

danee1
danee1 回复zww2016: 那也没有问题呢,要不要更换下jar包呢? 从maven上下一个吧,我这没问题啊,就是这个回复截不了图
11 个月之前 回复
zww2016
zww2016 json串太长了,我只截图了其中一个列子,真实的串应该为:[{'_id':'qqqqqqqwwwwwww','name':'123123123123123'},{'_id':'qqqqqqqwwwwwww','name':'123123123123123'}...]
11 个月之前 回复
qq_22590821
qq_22590821   2017.08.29 10:04

ObjectMapper mapper = new ObjectMapper();
BaseHotNews bhn = mapper.readValue(doGet, BaseHotNews.class);
Systemo.out.println(bhn.get_id());

这是使用Jackson解析

li_ling_ren
li_ling_ren   2017.08.29 10:09

不知道你用的什么工具进行json转对象的,把_id 变量换个试下,有可能开发者没考虑你这种命名规则呢

li_ling_ren
li_ling_ren 回复zww2016: 不客气,也是瞎蒙的
11 个月之前 回复
zww2016
zww2016 已经放大招了,将所有为“_id”的变量全部替换成了"id",这样实例化对象那会就接到值了。(感谢)
11 个月之前 回复
SeaTalks
SeaTalks   2017.08.29 10:13

我认为BaseTimeSlot中的sec应该是long型,不是string

weisheixiaoxin
weisheixiaoxin   Rxr 2017.08.29 11:28

为什么要注入到 类对象里面? 直接注入map 或者jsonObject 对象 或者str 然后转 jsonObject 对象不好,然后用jsonObject 转 自定义对象也好,你还可以检查参数是否注入,为什么要直接注入对象? 你用自定义的类 约束太强了,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
与第三方进行联调测试,对方将JSON形式的参数放到params中,接收请求后获取参数值为null
第三方将参数放入请求体中,请求过来之后,这边request.getParameter("params")获取不到参数。第三方用的Content-Type是application/json,在我们的建议下修改为text/html,发现还是不行。但是我们之前自测是没有问题的,所以看了下自测的HttpClient中是如何添加参数的,然后发现如下:所以猜测应该是按照form的键值对形式发送,所以又让第三方...
解决webService 服务接受到参数为null的问题
写了一个简单的webService  但是参数一直传递不过去,后来才知道 要写成arg0,arg1,arg2...call.addParameter("arg0", XMLType.XSD_DATE,ParameterMode.IN);  这样是OK的,call.addParameter("name", XMLType.XSD_DATE,ParameterMode.IN); 这样服务端接收到的参数...
含有null值属性对象转json时使其变成空字符串
在项目开发中经常需要讲后台的某个对象以json的方式传递给前台,默认配置将为空的属性不传递给前台。 NON_NULL
controller接收的参数总是为null及解决办法
原因:1,可能是controller接收参数的数据类型和前台传过来的参数不一样2,可能是controller接收参数和前台传到后台的参数不一样,如下图所示
解决对象与JSON解析时属性不对应+空字符串+枚举的问题
在将JSON串解析为对象时,如果属性不对应或者枚举为空字符串时,均会导致解析错误,此时可通过几个配置解决,直接上代码 package com.dms.utils; import java.io.ByteArrayOutputStream; import java.io.IOException; import com.fasterxml.jackson.core.JsonEncoding; i
解决返回json数据,属性值为null或空被省略的问题。
当使用com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter转换返回数据为json时,会省略掉为空为null的属性值。 解决办法在spingmvc.xml配置json转换器时加上对空和null的处理,配置如下: QuoteFieldNames:表示返回的json数据,key值加上双引号。
解决gson实体转json时当字段值为空时,json串中就不存在该属性
如:address不为空时,json串可能为{"address","上海市"},当address = null 时,会发现该属性转换为json时key值不存在。细心看到你的java代码是这样Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")                     .excludeFieldsWit
javabean转化为json格式的过滤 值为空或为null时的字段
我们向前端传数据时大多数都是先从从数据库中查询出来注入到实体类中然后转化为json格式再传给前端, 如果数据库没有实体类对应的字段或者数据库中的值为null,则对应的实体类的属性为null。此时我们传给前端的结果会是这样,null值的字段都为空 有时我们需要过滤掉这些空值的字段,我们使用这段代码 JsonConfig jsonConfig = new JsonConfig();      
bean转json时null字段不转换的方法
1.使用GSON时,默认不对null字段进行转换,而ObjectMapper和JSONObject默认对null字段进行转换 (1)使用GSON时,对null字段进行转换的设置 Gson gsonSerializeNull = new GsonBuilder().serializeNulls().create(); (2)使用ObjectMapper对null字段不进行转换的设置 Obj
Json返回结果为null属性不显示解决
返回时null属性不显示:String str = JSONObject.toJSONString(obj); 返回为null属性显示:String str = JSONObject.toJSONString(obj,SerializerFeature.WriteMapNullValue); Fastjson的SerializerFeature序列化属性QuoteFieldNames———-输出k...