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

2025-10-28 14:01:39

1、第一步骤:创建一个java项目。

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

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

3、输入项目名字,选择依赖web(如果不需要可以不选),选择存放目录-完成(Finish)

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

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

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

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

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

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>

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

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集合代替实体类实现同样效果。

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

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

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

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());    

}

}

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

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

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"));

}

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

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

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

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

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

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","");

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢