我正在DateTime通过我的asmx网络服务以json字符串形式接收.NET 对象,并尝试在gson库的帮助下对其进行解析。但是似乎不支持解析.net样式的DateTime。我如何Date使用Gson 轻松地将其解析为Java 对象?
DateTime
Date
我收到的字符串是这样的:
"DateOfBirth":"\/Date(736032869080)\/"
PS我不想在服务器端进行任何修改以接收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.. } }
或改用此示例,并遵循“使用WCF Microsoft JSON日期处理”一章。