GSON-将密钥转换为小写

时间:2018-07-25 15:38:26

标签: java gson

我正在尝试编写一个GSON TypeAdapterFactory,以将String型键/值对中的所有键转换为小写;即它将转换:

[{"Foo","Bar"}]

[{"foo","Bar"}]

到目前为止,这是我所拥有的,但是在确定键何时为字符串值时遇到了麻烦。 JsonTreeWriter类具有name()的Setter方法,但是没有用于获取名称的方法吗?

    TypeAdapterFactory lowercaseKeyTypeAdapterFactory = new TypeAdapterFactory() {
        @Override
        public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
            final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
            final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type); //
            return new TypeAdapter<T>() {

                public void write(JsonWriter out, T value) throws IOException {

                    if( out instanceof JsonTreeWriter )
                        out.name( out.getName().toLowerCase();

                    JsonElement tree = delegate.toJsonTree(value);
                    elementAdapter.write(out, tree);
                }

                public T read(JsonReader in) throws IOException {
                    JsonElement tree = elementAdapter.read(in);
                    return delegate.fromJsonTree(tree);
                }
            };
        }
    };

0 个答案:

没有答案