我正在通过我的 asmx 网络服务接收 .NET 的 DateTime
对象作为 json 字符串,并尝试在 gson 库的帮助下解析它。但似乎不支持解析 .net 风格的 DateTime。
我如何使用 Gson 轻松地将它解析为 java 的 Date
对象而不会有太多麻烦?
我收到的字符串是这样的:
"DateOfBirth":"\/Date(736032869080)\/"
附言我不想在服务器端进行任何修改以接收 DateTime 作为 Long 值
最佳答案
像这样:
String json = "\"\\/Date(736032869080)\\/\"";
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new NetDateTimeAdapter()).create();
System.out.println("Date=" + gson.fromJson(json, Date.class));
class NetDateTimeAdapter extends TypeAdapter<Date> {
@Override
public Date read(JsonReader reader) throws IOException {
if (reader.peek() == JsonToken.NULL) {
reader.nextNull();
return null;
}
Date result = null;
String str = reader.nextString();
str = str.replaceAll("[^0-9]", "");
if (!TextUtils.isEmpty(str)) {
try {
result = new Date(Long.parseLong(str));
} catch (NumberFormatException e) {
}
}
return result;
}
@Override
public void write(JsonWriter writer, Date value) throws IOException {
// Nah..
}
}
或使用this example而是遵循“处理 WCF Microsoft JSON 日期”一章。
关于android - 如何将作为 json 字符串接收到的 .net DateTime 解析为 java 的 Date 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127529/