2 zww2016 zww2016 于 2017.08.29 09:47 提问

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

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

6个回答

huang931027
huang931027   2017.08.29 09:49

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

zww2016
zww2016 实例化对象那会debug没有报错
3 个月之前 回复
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上下一个吧,我这没问题啊,就是这个回复截不了图
3 个月之前 回复
zww2016
zww2016 json串太长了,我只截图了其中一个列子,真实的串应该为:[{'_id':'qqqqqqqwwwwwww','name':'123123123123123'},{'_id':'qqqqqqqwwwwwww','name':'123123123123123'}...]
3 个月之前 回复
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: 不客气,也是瞎蒙的
3 个月之前 回复
zww2016
zww2016 已经放大招了,将所有为“_id”的变量全部替换成了"id",这样实例化对象那会就接到值了。(感谢)
3 个月之前 回复
SeaTalks
SeaTalks   2017.08.29 10:13

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

weisheixiaoxin
weisheixiaoxin   2017.08.29 11:28

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

Csdn user default icon
上传中...
上传图片
插入图片