从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}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐