Java处理取出的mongo中的Long类型数据

原创
2019/04/18 09:24
阅读数 1.4W

 从mongo中取出Long类型的数据时,我们可以看到其对应的json是这样的:

String str = "{"name":"张三","age":{"$numberLong":"1513094400000"}}";

 很明显,原本应该是Long类型的数据,多了一个"$numberLong",这个是mongo对于long型数据做的存储操作,这样的数据不是我们想要的,接下来便对这类数据进行处理,我的做法是把json对象转为字符串,使用String类的方法,以{\"$numberLong\":\"作为匹配条件,把这部分给去掉,还原成我们想要的json字符串,上代码:

/**
 * @ClassName Gril
 * @Description TODO
 * @Author Huarray
 * @Date 2019/4/17 9:04
 * @Version 1.0
 **/
public class Gril {
    private String name;
    private Long age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getAge() {
        return age;
    }

    public void setAge(Long age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Gril{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
import com.alibaba.fastjson.JSONObject;
import domain.Gril;

/**
 * @ClassName TypeChange
 * @Description 处理mongo中的Long类型数据
 * @Author Huarray
 * @Date 2019/4/17 9:05
 * @Version 1.0
 **/
public class TypeChange {
    private static final String regex = "{\"$numberLong\":\"";

    public static void main(String[] ages) {
        String str = "{\"name\":\"张三\",\"age\":{\"$numberLong\":\"1513094400000\"}}";
        StringBuffer stringBuffer = new StringBuffer();
        dealString(stringBuffer, str);
        Gril gril = JSONObject.parseObject(stringBuffer.toString(),Gril.class);
        System.err.println(str);
        System.out.println(stringBuffer);
        System.out.println(gril);
    }
    /**
     * @Author Huarray
     * @Description 处理类
     * @Date 9:19 2019/4/18
     * @Param [stringBuffer, json]
     * @return void
     **/
    public static void dealString(StringBuffer stringBuffer, String json) {
        int index = json.indexOf(regex);
        if (index > -1) {
            stringBuffer.append(json.substring(0, index));
            String send = json.substring(index + 16);
            String time = send.substring(0, 13);
            stringBuffer.append(time);
            String data = send.substring(15);
            if (data.indexOf(regex) != -1) {
                dealString(stringBuffer, data);
            } else {
                stringBuffer.append(data);
            }
        } else {
            stringBuffer.append(json);
        }
    }
}

结果:

{"name":"张三","age":{"$numberLong":"1513094400000"}}
{"name":"张三","age":1513094400000}
Gril{name='张三', age=1513094400000}

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部