android - 如何将作为 json 字符串接收到的 .net DateTime 解析为 java 的 Date 对象

标签 android .net json parsing datetime

我正在通过我的 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/

相关文章:

android - 如何将 ImageView 从一个 Activity 发送到另一个 Activity

c# - 使用 Rx 同步异步事件

javascript - 如何在 Controller 中格式化 JSON 数据

c# - 以编程方式设置发布页面内容

php - json_encode 可以触发 catch block 吗?

c# - Web API JSON 格式

java - Android中滑动屏幕的动态内容

android - ListView 内的可聚焦 EditText

android - 在一个布局中播放 2 个视频 View 重叠

c# - 实现 Win32 消息循环并使用 P/Invoke 创建 Window 对象