package com.jsoniter; import com.jsoniter.extra.GsonCompatibilityMode; import com.jsoniter.spi.Decoder; import com.jsoniter.spi.JsoniterSpi; import com.jsoniter.spi.TypeLiteral; import junit.framework.TestCase; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class TestMap extends TestCase { static { // JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH); } public void test_object_key() throws IOException { Map map = JsonIterator.deserialize("{\"中文\":null}", new TypeLiteral>() { }); assertEquals(new HashMap() {{ put("中文", null); }}, map); } public void test_string_key() throws IOException { Map map = JsonIterator.deserialize("{\"中文\":null}", new TypeLiteral>() { }); assertEquals(new HashMap() {{ put("中文", null); }}, map); } public void test_integer_key() throws IOException { Map map = JsonIterator.deserialize("{\"100\":null}", new TypeLiteral>() { }); assertEquals(new HashMap() {{ put(100, null); }}, map); } public static class TestObject1 { public int Field; } public void test_MapKeyCodec() { JsoniterSpi.registerMapKeyDecoder(TestObject1.class, new Decoder() { @Override public Object decode(JsonIterator iter) throws IOException { TestObject1 obj = new TestObject1(); obj.Field = Integer.valueOf(iter.readString()); return obj; } }); Map map = JsonIterator.deserialize("{\"100\":null}", new TypeLiteral>() { }); ArrayList keys = new ArrayList(map.keySet()); assertEquals(1, keys.size()); assertEquals(100, keys.get(0).Field); // in new config map = JsonIterator.deserialize( new GsonCompatibilityMode.Builder().build(), "{\"100\":null}", new TypeLiteral>() { }); keys = new ArrayList(map.keySet()); assertEquals(1, keys.size()); assertEquals(100, keys.get(0).Field); } }