Java之json和对象之间的相互转换

淩亂°似流年 2022-09-23 13:54 335阅读 0赞

json使用前必须先引入json的相关jar包,我这里用的是json-lib-2.4-jdk15.jar这个版本的jar包。如果大家没有的话可以直接在我这里下载:点击打开链接

想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnpoaXFpYW5nMDMxNg_size_16_color_FFFFFF_t_70

导入完jar就可以正式开始开发了,这里先看一个对象转json的例子:

对象的具体内容如下:

  1. package myapi.json.demo.entity;
  2. import java.util.List;
  3. public class MyBean {
  4. private String Id;
  5. private String Name;
  6. private List CardNum;
  7. public MyBean(String id, String name, List cardNum) {
  8. super();
  9. Id = id;
  10. Name = name;
  11. CardNum = cardNum;
  12. }
  13. public MyBean() {
  14. super();
  15. }
  16. public String getId() {
  17. return Id;
  18. }
  19. public void setId(String id) {
  20. Id = id;
  21. }
  22. public String getName() {
  23. return Name;
  24. }
  25. public void setName(String name) {
  26. Name = name;
  27. }
  28. public List getCardNum() {
  29. return CardNum;
  30. }
  31. public void setCardNum(List cardNum) {
  32. CardNum = cardNum;
  33. }
  34. }

转换的关键代码如下所示:

  1. package myapi.json.demo;
  2. import java.lang.reflect.InvocationTargetException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Map;
  8. import org.apache.commons.beanutils.PropertyUtils;
  9. import myapi.json.demo.entity.MyBean;
  10. import net.sf.json.JSONArray;
  11. import net.sf.json.JSONObject;
  12. public class JsonApi {
  13. public static void main(String[] args) throws Exception {
  14. List<MyBean> myBeanList = new ArrayList<MyBean>();
  15. List<String> cardNum1 = new ArrayList<String>();
  16. cardNum1.add("number1");
  17. cardNum1.add("number2");
  18. cardNum1.add("number3");
  19. cardNum1.add("number4");
  20. MyBean myBean1=new MyBean("number-1", "test-1", cardNum1);
  21. List<String> cardNum2 = new ArrayList<String>();
  22. cardNum2.add("number1");
  23. cardNum2.add("number2");
  24. cardNum2.add("number3");
  25. cardNum2.add("number4");
  26. MyBean myBean2=new MyBean("number-2", "test-2", cardNum2);
  27. myBeanList.add(myBean1);
  28. myBeanList.add(myBean2);
  29. JSONArray jsonArray=new JSONArray().fromObject(myBeanList);
  30. JSONObject jsonObject = new JSONObject();
  31. jsonObject.put("key", jsonArray);
  32. System.out.println(jsonObject);
  33. }
  34. }

运行结果如下:

  1. {"key":[{"cardNum":["number1","number2","number3","number4"],"id":"number-1","name":"test-1"},
  2. {"cardNum":["number1","number2","number3","number4"],"id":"number-2","name":"test-2"}]}

这里需要注意的是JSONObject中必须是类似于map中key+value的类型,而JSONArray中必须是类似于list中的类似。

下面是json转对象的例子:

  1. package myapi.json.demo;
  2. import java.lang.reflect.InvocationTargetException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Map;
  8. import org.apache.commons.beanutils.PropertyUtils;
  9. import myapi.json.demo.entity.MyBean;
  10. import net.sf.json.JSONArray;
  11. import net.sf.json.JSONObject;
  12. public class JsonApi {
  13. public static void main(String[] args) throws Exception {
  14. List<MyBean> myBeanList = new ArrayList<MyBean>();
  15. List<String> cardNum1 = new ArrayList<String>();
  16. cardNum1.add("number1");
  17. cardNum1.add("number2");
  18. cardNum1.add("number3");
  19. cardNum1.add("number4");
  20. MyBean myBean1=new MyBean("number-1", "test-1", cardNum1);
  21. List<String> cardNum2 = new ArrayList<String>();
  22. cardNum2.add("number1");
  23. cardNum2.add("number2");
  24. cardNum2.add("number3");
  25. cardNum2.add("number4");
  26. MyBean myBean2=new MyBean("number-2", "test-2", cardNum2);
  27. myBeanList.add(myBean1);
  28. myBeanList.add(myBean2);
  29. JSONArray jsonArray=new JSONArray().fromObject(myBeanList);
  30. JSONObject jsonObject = new JSONObject();
  31. jsonObject.put("key", jsonArray);
  32. JSONArray arrayResult=jsonObject.getJSONArray("key");
  33. for(int i=0;i<arrayResult.size();i++){
  34. JSONObject jsonResult = arrayResult.getJSONObject(i);
  35. MyBean myBeanResult= (MyBean)JSONObject.toBean(jsonResult, MyBean.class);
  36. System.out.println(myBeanResult.getName());
  37. }
  38. }
  39. }

运行结果如下:

  1. test-1
  2. test-2

这里需要注意的是:只有JSONOBject中才有toBean的方法,所以想要把JSONArray中的list数据一一对应到对象中,只能先把JSOnArray对象转换为JSONObject才可以。

这里介绍的是最基本的json转对象的方法,关于如何创建json其实很简单,大部分其实都是map,list,数组,对象等进行混合组装成json数据,对于这种混合型的解析一般都是根据具体数据进行具体解析。当然最好的方式其实就是服务器通过对象直接转换为json数据,客户端通过编写相同的对象实体类,直接进行json转换对象操作就可以实现对象的解析操作,既省事又省力。

发表评论

表情:
评论列表 (有 0 条评论,335人围观)

还没有评论,来说两句吧...

相关阅读