在与前端页面交互时,经常需要传递json字符串数据,我们可以使用jsonobject来处理json字符串。
需要导入2个jar包:
fastjson-1.2.2.jar,fastjson-1.2.2-sources.jar
import com.alibaba.fastjson.jsonobject;import org.junit.test;import java.util.*;
作为测试,先准备几个字符串数据:
private string s1 = " {\"areaname\": \"北京\",\n" + " \"cityid\": 110100,\n" + " \"nomarket\":马克思主义理论 fal,\n" + " \"oldcityid\": 646,\n" + " \"pinyin\": \"beijing\",\n" + " \"provinceid\": 110000}"; private string s2 = "[\n"+ " {\"name\":\"tom\",\"age\":18,\"gender\":\"男\"},\n"+ " {\"name\":\"lily\",\"age\":19,\"gender\":\"女\"},\n"+ " {\"name\":\"hanmeimei\",\"age\":17,\"gender\":\"女\"}]"; private string s3 = "{\"id\":1, \"from\":\"xiaoxin\", \n" + " \"result\":[\n" + " {\"age\":18,\"gender\":\"男\",\"name会笑的眼睛\":\"tom\"},\n" + " {\"age\":19,\"gender\":\"女\",\"name\":\"lily\"},\n" +莱赫维亚vs广州恒大 " {\"age\":17,\"gender\":\"女\",\"name\":\"hanmeimei\"}]}"; private string s4 = "{\"age\":18,\"gender\":\"男\",\"name\":\"tom\"}"; private string s5 ="[1,2,3,4,5]";
我们需要使用jsonobject.par(),jsonobject.pararray(),jsonobject.parobject()三个方法来转换json数据,jsonobject.par()获得后的数据需要强转为jsonobject才能进行下一步操作。
json字符串转为jsonobject对象后,操作数据与map类似,使用get()方法来获取数据,也可以使用getinteger(),getstring()…等方法来获取数据。
若要转换为java对象,则需要创建一个有相应字段的类,下例中为ur类
@test public void test1(){ //json字符串转json对象,与map类似 //只写par,需要强转,写parobject,则直接得到jsonobject jsonobject jsonobject = (jsonobject) jsonobject.par(s1); system.out.println(jsonobject);//{"areaname":"北京","cityid":110100,"nomarket":fal,"oldcityid":646,"pinyin":"beijing","provinceid":110000} //从json对象中获取值 string areaname = jsonobject.getstring("areaname"); system.out.println("----------------"); system.out.println(areaname); system.out.println(jsonobject.getinteger("oldcityid")); system.out.println(jsonobject.get("cityid")); system.out.println("----------------"); //遍历jsonobject jsonobject.foreach((key,value)-> system.out.println(key+"->"+value)); //将字符串转换为java对象 ur ur = json.parobject(s4, ur.class); system.out.println(ur); }
ur类:
public class ur { private string name; private int age; private string gender; @override public string tostring() { return "ur{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; } public string getname() { return name; } public void tname(string name) { this.name = name; } public int getage() { return age; } public void tage(int age) { this.age = age; } public string getgender() { return gender; } public void tgender(string gender) { this.gender = gender; } public ur() { } public ur(string name, int age, string gender) { this.name = name; this.age = age; this.gender = gender; }}
转换json数组,需要使用 jsonobject.pararray()方法,转换为jsonarray类,之后的操作方法与操作arraylist类似。
@test public void test2(){ //json对象数组字符串转json对象数组,相当于arraylist jsonarray jsons2 = jsonobject.pararray(s2); system.out.println(jsons2);//[{"age":18,"gender":"男","name":"tom"},{"age":19,"gender":"女","name":"lily"},{"age":17,"gender":"女","name":"hanmeimei"}] //获取索引为1的值,需要强转为jsonobject jsonobject o1 = (jsonobject)jsons2.get(0); system.out.println(o1); //遍历// jsons2.foreach(item-> system.out.println(item)); jsons2.foreach(system.out::println); //转化为java arraylist list<ur> urs = json.pararray(s2, ur.class); system.out.println(urs); }
转表白词化复杂的json数据,需要一步一步转换,获取相应的数据可以使用getjsonarray(),getjsonobject()方法
@test public void test3(){ //复杂数据转json对象,与上面的一样 jsonobject objects3 = jsonobject.parobject(s3); //拿到result jsonarray jsonarray result = objects3.getjsona经济分析报告rray("result"); //遍历result result.foreach(system.out::println); //获取指定索引的值 jsonobject o = result.getjsonobject(1); system.out.println(o.getstring("name")); //lily //将json数组转换为list list<integer> numarr = json.pararray(s5, integer.class); system.out.println(numarr); //将result转换为list对象 list<ur> urs = json.pararray(objects3.getjsonarray("result").tojsonstring(), ur.class); system.out.println(urs);//[ur{name='tom', age=18, gender='男'}, ur{name='lily', age=19, gender='女'}, ur{name='hanmeimei', age=17, gender='女'}] }
先准备一个map和一个list
private hashmap<string, string> map1 = new hashmap<string, string>();private list<string> list1 = new arraylist<>();private list<ur> list2 = new arraylist<>();
使用jsonobject.tojsonstring()方法来将对象转换为json字符串
@test public void test1(){ map1.put("apple","新鲜的苹果"); //向集合中添加对象 map1.put("computer","配置优良的计算机"); map1.put("book","堆积成山的图书"); system.out.println(map1); //map对象转json字符串 string s = jsonobject.tojsonstring(map1); system.out.println(s); //java对象转json字符串 string s1 = jsonobject.tojsonstring(new ur("tom", 18, "男")); system.out.println(s1); }
转换数组也是一样:
@test public void test2(){ collections.addall(list1,"tom","18","男"); system.out.println(list1); //arraylist转json字符串 string s = jsonobject.tojsonstring(list1); system.out.println(s); //java对象的arraylist转json字符串 collections.addall(list2,new ur("tom",18,"男"),new ur("lily",16,"女")); system.out.println(jsonobject.tojsonstring(list2)); }
本文发布于:2023-04-05 04:15:24,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/c447cd9b6d383fede76efb435840db4a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:string转jsonarray有双引号(Java把string转json格式的办法).doc
本文 PDF 下载地址:string转jsonarray有双引号(Java把string转json格式的办法).pdf
留言与评论(共有 0 条评论) |