# json **Repository Path**: chenhonghong/json ## Basic Information - **Project Name**: json - **Description**: 支持非string类型的key的json解析器 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-09-17 - **Last Updated**: 2025-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README fastjson、jackson之类的json库属于标准json库,它们在反序列化json字符串的时候会把数值类型的key强行转换成字符串,并且没有关闭这个功能的选项 比如有这样一个hashmap ```java HashMap map = new HashMap<>(); map.put(10001,"shanghai"); map.put(10002,"hangzhou"); map.put(10003,"chengdu"); map.put(10004,"beijing"); map.put(10005,"nanjing"); ``` 转换后的json字符串是 ```json { 10001:"shanghai", 10002:"hangzhou", 10003:"chengdu", 10004:"beijing", 10005:"nanjing" } ``` 但是通过fastjson库将json转回java对象,java对象的格式的key却变成了字符串 ```java String jsonString = "{\n" + "\t10001:\"shanghai\",\n" + "\t10002:\"hangzhou\",\n" + "\t10003:\"chengdu\",\n" + "\t10004:\"beijing\",\n" + "\t10005:\"nanjing\"\n" + "}"; JSONObject jsonObject1 = JSON.parseObject(jsonString); System.out.println(jsonObject1); ``` 输出 ```json {"10002":"hangzhou","10001":"shanghai","10004":"beijing","10003":"chengdu","10005":"nanjing"} ``` 这个json序列化库可以解决这个问题。 Fastjson2解决了这个问题,但是当系统无法将json库升级成fastjson2时,可以使用该库