java操作json数据之net.sf.json-lib

      JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据互换格局。它基于 ECMAScript (欧洲计较机协会拟定的js规范)的一个子集,采用完全自力于编程说话的文本格局来存储和暗示数据。简练和清楚的条理布局使得 JSON 当作为抱负的数据互换说话。 易于人阅读和编写,同时也易于机械解析和生当作,并有用地晋升收集传输效率。

工具/原料

  • 电脑
  • intellij IDEA或者eclipse

方式/步骤

  1. 1

    第一步调:建立一个java项目。

    1、file--》new--》project...或者Model...打开建立窗口

    2、选择建立的项目为spring initializr 进入springboot项目建立步调(也可以选择类型java,建立一个通俗java web项目)

    3、输入项目名字,选择依靠web(若是不需要可以不选),选择存放目次-完当作(Finish)

  2. 2

    第二步调:在pom.xml中添加net.sf.json-lib依靠

    如下所示:在pom.xml文件的dependencies标签中添加

    <dependency>    

    <groupId>net.sf.json-lib</groupId>    

    <artifactId>json-lib</artifactId>    

    <version>2.4</version>    

    <classifier>jdk15</classifier>

    </dependency>

  3. 3

    第三步调:编写代码。

    1、编写实体类:Student get和set方式本身生当作

    public class Student {    private int id;    private String name;    private String sex;

    }

    2、编写测试代码:

    2.1需要引入jar包

    import net.sf.json.JSONObject;

    2.2关头代码

    public static void testObject(){    

    Student st = new Student();    

    st.setId(1);    

    st.setName("张三");    

    st.setSex("男");    

    //转为json对象    

    JSONObject json = JSONObject.fromObject(st);    

    System.out.println(json);    

    //转为json字符串    

    System.out.println(json.toString())    

    //将json字符串转为json对象    

    JSONObject jsonStr = JSONObject.fromObject(json.toString());    

    //获得json数据    

    Object obj = JSONObject.toBean(jsonStr,Student.class);    

    Student st2 = (Student) obj;    System.out.println(st2.getSex());}

    3、测试代码功能。

    3.1首先建立一个实体类,并给属性复制,先实现将实体类转为json对象,转为json字符串的功能。

    3.2 再实现将一个json字符串转为具体的实体类的功能。

    3.3 可以将利用map调集取代实体类实现同样结果。

  4. 4

    第四步调:List调集的json操作。

    具体代码如下所示:

    4.1 需要引入:

    import net.sf.json.JSONArraimport java.util.ArrayList;

    import java.util.List;

    4.2 关头代码:

    public static void testList(){    

    //将调集对象转为json对象,json字符串    

    List<Student> list= new ArrayList<Student>();    

    Student st = new Student();    

    st.setId(1);    

    st.setName("张三");    

    st.setSex("男");    

    Student st2 = new Student();    

    st2.setId(2);    

    st2.setName("小丽");    

    st2.setSex("女");    

    list.add(st);   

    list.add(st2);    

    //将类转为json对象    

    JSONArray array=JSONArray.fromObject(list);    

    System.out.println(array.toString());    

    //将json对象转为对应的调集类    

    JSONArray arrayBean = JSONArray.fromObject(array.toString());    

    List<Student> listBean = (List<Student>) JSONArray.toCollection(arrayBean,Student.class);    

    //输出转换后的成果    

    for (Student lst: listBean) {        

    System.out.println("name:"+lst.getName());    

    }

    }

  5. 5

    第五步调:多层实体类处置。

    1、实体类:set和get方式本身生当作(set和get方式必需有)

    public class Person     private String id;    private Person pserson;

    }

    2、关头测试代码:实体类Person 属性仍是Person 时json解析为实体类时一次搞定。

    import net.sf.json.JSONObject;

    public static void main(String[] args) {    Person p1 = new Person();    p1.setId("111");    Person p2 = new Person();    p2.setId("222");    Person p3 = new Person();    p3.setId("333");    p1.setPserson(p2);    p2.setPserson(p3);    JSONObject jsonp = JSONObject.fromObject(p1);    System.out.println(jsonp);    Object objp = JSONObject.toBean(jsonp,Person.class);    Person p4 = (Person) objp;    Person p5 =  p4.getPserson();    Person p6 =  p5.getPserson();    System.out.println(p6.getId());}

    3、map属性中存放map时比力麻烦需要利用MorphDynaBean 或者get一次解析一次。

    public static void main(String[] args) {    Map map1 = new HashMap();    Map map2 = new HashMap();    Map map3 = new HashMap();    map3.put("value","Male");    map2.put("gender",map3);    map1.put("attributes",map2);    JSONObject json = JSONObject.fromObject(map1);    System.out.println(json);    Object obj2 = JSONObject.toBean(json,Map.class);    Map map = (Map) obj2;    MorphDynaBean map4 = (MorphDynaBean) map.get("attributes");    MorphDynaBean map5 = (MorphDynaBean) map4.get("gender");    String male = (String) map5.get("value");    System.out.println(male);    //或者利用get一次解析一次    JSONObject json3 = JSONObject.fromObject(json.get("attributes"));    Map map6 = (Map) JSONObject.toBean(json3,Map.class);    JSONObject json4 = JSONObject.fromObject(json3.get("gender"));    Map map7 = (Map) JSONObject.toBean(json4,Map.class);    System.out.println(map7.get("value"));}

  6. 6

    第六步调:net.sf.json-lib常用常识点。

    5.1:net.sf.json.JSONObject常用方式:

    JSONObject json = JSONObject.fromObject(st);

    //按照key可以获得一个Object对象,key可所以字符串和Object

    Object obj = json.get("key");

    //按照key可以获得一个布尔值,key是一个字符串

    Boolean bo = json.getBoolean("key");

    还有一下这些,都是按照key返回具体的类型的数据。

    json.getString("key");json.getInt("key");

    json.getDouble("key");

    json.getJSONArray("key");

    json.getJSONArray("key");

    json.getLong("key");

    这些get开首的按照key获取value的方式若是key不存在会报错现实利用结果不是出格好。

    可以考虑opt开首的方式,当key不存在时返回默认值,或者自界说需要返回的内容。如下

    json.opt("key");json.optInt("key");

    json.optInt("key",0);

    json.optString("key");

    json.optString("key","");

注重事项

  • 实体类的属性必然要有对应的set和get方式不然,转换时对应的属性数据会丢掉。
  • 开辟情况jdk1.8 IDEA2018.2.2 maven apache-maven-3.5.4
  • 发表于 2019-04-19 22:31
  • 阅读 ( 162 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论