2.x中如何将JSON转util.Map 在1.x中JSON转util.Map如下:
//JSON格式: {"a":"111","b":"222","c":"333"} JSONObject jsonConf = ...; Map<String, String> conf = jsonConf.toJavaObject(new TypeReference<Map<String, String>>() {});
请问在2.x中应该怎么转换,没看到相应的兼容方法
原提问者GitHub用户hujian0923
在 GPT-3.5 中,建议您使用 jackson 库来将 JSON 转换为 Map。以下是一个示例:
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper;
public class Example { public static void main(String[] args) throws JsonProcessingException { // JSON 字符串 String jsonString = "{"a":"111","b":"222","c":"333"}";
// 创建一个 ObjectMapper 对象
ObjectMapper objectMapper = new ObjectMapper();
// 将 JSON 字符串转换为 Map
Map<String, String> map = objectMapper.readValue(jsonString, new TypeReference<Map<String, String>>() {});
// 输出 Map 的内容
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
}
} 在这个例子中,我们首先使用 ObjectMapper 类创建了一个对象。然后,我们使用 readValue() 方法将 JSON 字符串转换为 Map,并指定转换类型为 Map<String, String>。最后,我们遍历 Map 的每个元素,并将其输出到控制台。
String str = "{}";
{
JSONReader jsonReader = JSONReader.of(str);
jsonReader.getContext().setObjectSupplier(HashMap::new);
assertEquals(HashMap.class, jsonReader.readObject().getClass());
}
{
JSONReader jsonReader = JSONReader.of(str);
jsonReader.getContext().setObjectSupplier(HashMap::new);
assertEquals(HashMap.class, jsonReader.read(Object.class).getClass());
}
{
JSONReader jsonReader = JSONReader.of(str);
jsonReader.getContext().setObjectSupplier(HashMap::new);
assertEquals(HashMap.class, jsonReader.read(Map.class).getClass());
}
2.0.5的如上例子中,可以配置ObjectSupplier,你可以自己决定用哪个Map
https://github.com/alibaba/fastjson2/releases/tag/2.0.6 问题已经修复,请用新版本
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。