java – 用Gson分析JSON地图/字典?

前端之家收集整理的这篇文章主要介绍了java – 用Gson分析JSON地图/字典?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要解析一下 JSON响应:
  1. {"key1": "value1","key2": "value2","key3":
  2. {"childKey1": "childValue1","childKey2": "childValue2","childKey3": "childValue3" }
  3. }
  4.  
  5. class Egg {
  6. @SerializedName("key1")
  7. private String mKey1;
  8.  
  9. @SerializedName("key2")
  10. private String mKey2;
  11.  
  12. @SerializedName("key3")
  13. // ???
  14. }

我正在阅读Gson文档,但无法弄清楚如何正确地将字典反序列化为地图.

解决方法

Gson很容易处理一个JSON对象的反序列化,其名称为:值对到Java Map.

以下是使用原始问题的JSON的示例. (此示例还演示如何使用FieldNamingStrategy避免为每个字段指定序列化名称,前提是字段到元素的名称映射是一致的.)

  1. import java.io.FileReader;
  2. import java.lang.reflect.Field;
  3. import java.util.Map;
  4.  
  5. import com.google.gson.FieldNamingStrategy;
  6. import com.google.gson.Gson;
  7. import com.google.gson.GsonBuilder;
  8.  
  9. public class Foo
  10. {
  11. public static void main(String[] args) throws Exception
  12. {
  13. GsonBuilder gsonBuilder = new GsonBuilder();
  14. gsonBuilder.setFieldNamingStrategy(new MyFieldNamingStrategy());
  15. Gson gson = gsonBuilder.create();
  16. Egg egg = gson.fromJson(new FileReader("input.json"),Egg.class);
  17. System.out.println(gson.toJson(egg));
  18. }
  19. }
  20.  
  21. class Egg
  22. {
  23. private String mKey1;
  24. private String mKey2;
  25. private Map<String,String> mKey3;
  26. }
  27.  
  28. class MyFieldNamingStrategy implements FieldNamingStrategy
  29. {
  30. //Translates the Java field name into its JSON element name representation.
  31. @Override
  32. public String translateName(Field field)
  33. {
  34. String name = field.getName();
  35. char newFirstChar = Character.toLowerCase(name.charAt(1));
  36. return newFirstChar + name.substring(2);
  37. }
  38. }

猜你在找的Java相关文章