Java学习笔记:JSONObject与JSONArray的使用

合集下载

java jsonarray用法

java jsonarray用法

java jsonarray用法JSONArray是Java中用于处理JSON数组数据的一种重要类。

在Java中,使用JSONArray可以方便地操作和处理JSON数据,包括添加、删除、遍历、查找等操作。

本篇文档将详细介绍JSONArray的用法,帮助您更好地理解和应用JSONArray。

一、JSONArray简介JSONArray是JSON数据结构中的一种,用于表示一个包含多个JSON对象的数组。

在Java中,可以使用org.json包中的JSONArray 类来表示和操作JSONArray。

JSONArray类提供了丰富的API,方便开发者进行各种操作。

二、创建JSONArray对象要创建一个JSONArray对象,可以使用JSONArray类的构造函数。

构造函数接受一个字符串数组作为参数,用于表示JSONArray中的元素。

例如:```javaString[]jsonArrayElements={"元素1","元素2","元素3"};JSONArrayjsonArray=newJSONArray(jsonArrayElements);```上述代码创建了一个包含三个元素的JSONArray对象。

三、添加元素到JSONArray使用JSONArray类的add()方法可以将一个或多个元素添加到JSONArray中。

例如:```javaJSONArrayjsonArray=newJSONArray();jsonArray.add("元素1");jsonArray.add("元素2");jsonArray.add(newJSONObject("{\"key\":\"value\"}"));```上述代码将三个元素添加到了jsonArray中。

JSONObject和JSONArray使用手册

JSONObject和JSONArray使用手册

JSONObject和JSONArray使用import net.sf.json.JSONArray;import net.sf.json.JSONObject;import java.util.*;public class Java Test {public static void main(String[] args){JSONObject obj=new JSONObject();obj.put("derek","23");obj.put("dad", "49");obj.put("mom", "45");System.out.println("通过构造器的方式创建的JSONObject对象:"+obj);Map<string,string> map=new LinkedHashMap<>();map.put("derek","23");map.put("dad", "49");map.put("mom", "45");System.out.println("通过fromObject方法将map对象转换为JSONObject对象:"+JSONObject.fromObject(map));JSONArray arr=new JSONArray();arr.add(0,"derek");arr.add(1,"dad");arr.add(2,"mom");System.out.println("通过构造器的方式创建的JSONArray:"+arr);ArrayList list=new ArrayList<>();list.add("derek");list.add("dad");list.add("mom");System.out.println("通过fromObject方法将Arraylist对象转换为JSONArray对象:"+JSONArray.fromObject(list));System.out.println("将HashMap对象通过fromObject方法转换为JSONArray对象"+JSONArray.fromObject(map));String str="{\"derek\":23,\"dad\":49,\"mom\":45}";System.out.println("解析之后的JSON对象:"+JSONObject.fromObject(str));//遍历输出Iterator it=obj.keys();while(it.hasNext()){String key=it.next();System.out.println(key+":"+obj.get(key));}}}运行结果如下:通过构造器的方式创建的JSONObject对象:{"derek":"23","dad":"49","mom":"45"}通过fromObject方法将map对象转换为JSONObject对象:{"derek":"23","dad":"49","mom":"45"}通过构造器的方式创建的JSONArray:["derek","dad","mom"]通过fromObject方法将Arraylist对象转换为JSONArray对象:["derek","dad","mom"]将HashMap对象通过fromObject方法转换为JSONArray对象[{"derek":"23","dad":"49","mom":"45"}]解析之后的JSON对象:{"derek":23,"dad":49,"mom":45}derek:23dad:49mom:45Java List 用法java List是个集合接口,只要是集合类接口都会有个“迭代子”(Iterator ),利用这个迭代子,就可以对list内存的一组对象进行操作。

java jsonarray排序方法

java jsonarray排序方法

java jsonarray排序方法Java JSONArray是一种用于存储和操作JSON数据的数据结构。

在实际应用中,经常需要对JSONArray进行排序操作,以满足业务需求。

本文将介绍一些常用的JSONArray排序方法,帮助读者快速理解和使用。

一、JSONArray排序概述JSONArray是Java中用于表示JSON数组的类,它可以存储多个JSON对象。

而JSON对象是由键值对组成的,每个键值对表示一个属性。

在排序JSONArray时,我们通常是根据某个属性的值进行排序,比如按照年龄、价格等进行升序或降序排列。

二、使用JSONArray的sort方法进行排序JSONArray提供了一个sort方法,可以直接对数组进行排序。

sort方法有两个重载版本,一个是不传递Comparator参数的,默认按照元素的自然顺序进行排序;另一个是传递Comparator参数的,可以自定义排序规则。

1.默认排序JSONArray的sort方法默认按照元素的自然顺序进行排序。

自然顺序是根据元素的类型进行排序,比如数字从小到大,字符串按照字典序等。

示例代码如下:```javaJSONArray jsonArray = new JSONArray("[3, 1, 2]"); jsonArray.sort();System.out.println(jsonArray.toString());```输出结果为:[1, 2, 3]2.自定义排序如果要对JSONArray中的对象按照某个属性进行排序,可以使用传递Comparator参数的sort方法。

Comparator是一个函数式接口,可以根据自己的需求编写排序规则。

示例代码如下:```javaJSONArray jsonArray = new JSONArray("[{\"name\":\"Alice\", \"age\":18}, {\"name\":\"Bob\", \"age\":20}, {\"name\":\"Cindy\", \"age\":15}]");jsonArray.sort((o1, o2) -> {int age1 = ((JSONObject) o1).getInt("age");int age2 = ((JSONObject) o2).getInt("age");return age1 - age2;});System.out.println(jsonArray.toString());输出结果为:[{"name":"Cindy","age":15},{"name":"Alice","age":18},{"name":" Bob","age":20}]三、使用Collections工具类进行排序除了JSONArray提供的sort方法外,我们还可以使用Collections 工具类的sort方法对JSONArray进行排序。

使用Gson将字符串转换成JsonObject和JsonArray

使用Gson将字符串转换成JsonObject和JsonArray

使⽤Gson将字符串转换成JsonObject和JsonArray ⽬录Gson将字符串转JsonObject和JsonArray以下均利⽤Gson来处理JSONObject与JSON互转引⼊ jar , 此处引⼊ com.alibaba.fastjson 版本的jar包建⽴测试类对象转换Gson将字符串转JsonObject和JsonArray以下均利⽤Gson来处理1.将bean转换成Json字符串:public static String beanToJSONString(Object bean) {return new Gson().toJson(bean);}2.将Json字符串转换成对象:public static Object JSONToObject(String json,Class beanClass) {Gson gson = new Gson();Object res = gson.fromJson(json, beanClass);return res;}注:转换后的对象使⽤前进⾏强转:例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);3.将Json字符串转换成JsonObject对象:JsonObject returnData = new JsonParser().parse(jsonstr).getAsJsonObject();4.将JsonArray类型的Json字符串解析成对象⽅法Gson gson = new Gson();JsonParser parser = new JsonParser();JsonArray Jarray = parser.parse(jstring).getAsJsonArray();ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>();for(JsonElement obj : Jarray ){channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class);lcs.add(cse);}或者String json = "[{\"username\":\"test\"},{\"username\":\"test2\"}]";System.out.println(new JsonParser().parse(json).getAsJsonArray().get(0).getAsJsonObject().get("username").getAsString());5.获取JsonObject中指定key值对应的JsonArray对象:String json= "{\"pids\":[\"1\",\"2\",\"3\"]}";System.out.println(new JsonParser().parse(json).getAsJsonObject().getAsJsonArray("pids").get(0).getAsString()); JSONObject与JSON互转使⽤⽬的⽬前数据交互⼤多以 JSON 字符串为信息传输,主要格式有{"age":"22","name":"李四"}[{"age":"21","name":"张三"}]最常见的应⽤场景是前后端对接,第三⽅平台⽂档对接,下⾯展⽰转换使⽤。

jsonobject动态解析多层嵌套构造

jsonobject动态解析多层嵌套构造

一、什么是jsonobject动态解析JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以文本格式来传输结构化的数据。

在Java中,JSON数据通常以JSONObject的形式进行解析和构造。

JSONObject是org.json中的一个类,可以动态构造和解析多层嵌套的JSON数据。

二、为什么需要动态解析多层嵌套的JSON数据在实际开发中,我们经常会遇到多层嵌套的JSON数据,这些数据可能来自后端接口、第三方API,甚至是本地文件等。

动态解析多层嵌套的JSON数据可以帮助我们轻松地获取所需的数据,并对其进行操作和处理。

掌握动态解析多层嵌套的JSON数据是非常重要的。

三、使用JSONObject动态解析多层嵌套的JSON数据在Java中,我们可以使用JSONObject来动态解析多层嵌套的JSON 数据。

下面是一些常用的方法:1. 创建JSONObject对象```javaJSONObject jsonObject = new JSONObject(jsonString);```这里的jsonString可以是从后端接口或其他数据源获取的JSON字符串。

2. 获取一级属性```javaString value = jsonObject.getString("key");```这里的"key"是JSON数据中的属性名称,我们可以通过getString、getInt、getDouble等方法来获取相应类型的属性值。

3. 获取嵌套属性```javaJSONObject nestedObject =jsonObject.getJSONObject("nestedKey");String nestedValue = nestedObject.getString("nestedValue"); ```如果JSON数据中存在嵌套的对象,我们可以使用getJSONObject 方法获取嵌套的JSONObject,并继续对其进行解析。

递归解析嵌套jsonjsonarray和jsonobject

递归解析嵌套jsonjsonarray和jsonobject

递归解析嵌套jsonjsonarray和jsonobject 在处理嵌套的JSON数据时,我们通常会遇到两种类型的数据结构:JSON数组和JSON对象。

JSON数组是一个有序的列表,可以包含多个JSON对象或其他类型的值。

JSON对象是一个无序的键/值对集合,每个键都对应一个值。

当JSON数组或JSON对象嵌套在另一个JSON数组或JSON对象中时,我们就需要使用递归解析。

递归是一种自己调用自己的算法,在处理嵌套数据时非常有用。

例如,假设我们有以下JSON数据:{'name': 'John','age': 30,'cars': [{'model': 'BMW','year': 2018},{'model': 'Mercedes','year': 2019}]}要解析这个JSON数据,我们可以使用以下递归函数:function parseJSON(data) {for(var key in data) {var value = data[key];if(Array.isArray(value)) {// 如果值是一个数组,递归解析数组中的每个元素value.forEach(function(element) {parseJSON(element);});}else if(typeof value === 'object') {// 如果值是一个对象,递归解析对象中的每个键/值对parseJSON(value);}else {// 如果值是一个基本类型,直接输出console.log(key + ': ' + value);}}}使用此函数,我们可以对整个JSON数据进行递归解析。

在每次递归中,我们检查值的类型,并根据需要递归到更深层次的嵌套数据中。

关于java中JSONArray、JSONObject、List、String之间的转换

关于java中JSONArray、JSONObject、List、String之间的转换

关于java中JSONArray、JSONObject、List、String之间的转换本⼈最近⼏个⽉才开始JAVA开发⼯作,以前⼀直做的BI开发,转变的过程都是很艰难的。

新产品开发的过程中,由于新⼈,能⼒有限,遇到了N多困难,幸亏有关系很好的同事在旁边加油打⽓。

有好⼏次我悄悄跟同事说,不⾏了,我坚持不下去了,我就不是开发的料,同事每次都劝我开始都是难的,这段时间过去了你会发现其实没那么难。

是啊,就去登泰⼭,站在⼭脚下我就被它的巍峨吓得望⽽却步,那我怎么可能会登顶看到⽇出。

总嘚努⼒了才有放弃的资格。

于是就这样,坚持了⼏个⽉,现在虽然⾃⼰依然是个菜鸟,但是进步还是很⼤。

可能已经爬到了泰⼭的脚背上。

开发过程中很让⼈头疼的就是各种类型之间的转换,⼀开始真是蒙圈,后来⽤了⼏次好点了,赶紧把⾃⼰记得的写下来,怕以后忘了。

⼀、JASSONArray转为JSONObjectJSONArray result_type = new JSONArray();StringBuffer cdsIdxType = new StringBuffer();cdsIdxType.append(" select id from table_type ");result_type = jdbcTemp.queryForJSONArray(cdsIdxType.toString());JSONObject jsonObject = (JSONObject) result_type.get(i);⼆、JASONArray转为ListJSONArray result_type = new JSONArray();StringBuffer cdsIdxType = new StringBuffer();cdsIdxType.append(" select id from table_type ");result_type = jdbcTemp.queryForJSONArray(cdsIdxType.toString());ArrayList list_type = new ArrayList();for (int i = 0; i < result_type.size(); i++) {JSONObject jsonObject = (JSONObject) result_type.get(i);list_type.add(jsonObject.get("id"));}三、JSONArray转为StringJSONArray result_type = new JSONArray();StringBuffer cdsIdxType = new StringBuffer();cdsIdxType.append(" select id from table_type ");result_type = jdbcTemp.queryForJSONArray(cdsIdxType.toString());String typeAll = "";ArrayList list_type = new ArrayList();for (int i = 0; i < result_type.size(); i++) {JSONObject jsonObject = (JSONObject) result_type.get(i);list_type.add(jsonObject.get("id"));}for(int j=0;j<list_type.size();j++){typeAll = typeAll + "'" + list_type.get(j) + "'" + ",";}typeAll = typeAll.substring(0, typeAll.length() -1);四、String转换为ArrayListString tablecode = request.getParameter("tablecode");tablecode = tablecode.substring(1, tablecode.length()-1).replace("\"", "");String[] list = tablecode.split(",");ArrayList tables = new ArrayList();for(int i=0; i<list.length; i++){tables.add(list[i]);}五.String转JSONObjectString jsonMese = "{\"语⽂\":\"88\",\"数学\":\"78\",\"计算机\":\"99\"}";JSONObject myJson = JSONObject.fromObject(jsonMese);六.String转JSONArrayString jsonMessage = "[{'num':'成绩', '外语':88, '历史':65, '地理':99, 'object':{'aaa':'1111','bbb':'2222','cccc':'3333'}}," + "{'num':'兴趣', '外语':28, '历史':45, '地理':19, 'object':{'aaa':'11a11','bbb':'2222','cccc':'3333'}}," + "{'num':'爱好', '外语':48, '历史':62, '地理':39, 'object': {'aaa':'11c11','bbb':'2222','cccc':'3333'}}]";JSONArray myJsonArray = JSONArray.fromObject(jsonMessage);七.String转数组String string = "a,b,c"; String [] stringArr= string.split(","); //注意分隔符是需要转译如果是"abc"这种字符串,就直接String string = "abc" ; char [] stringArr = string.toCharArray(); //注意返回值是char数组如果要返回byte数组就直接使⽤getBytes⽅法就ok了String string = "abc" ; byte [] stringArr = string.getBytes();⼋、数组转Stringchar[] data={a,b,c};String s=new String(data);注:本⽂是通过⾃⼰的总结和总结他⼈经验得出来的结论,学疏才浅如果错误⼤家可以指出并改正。

java中json的使用和解析

java中json的使用和解析

java中json的使⽤和解析1.创建json对象1.1创建JSONObject对象使⽤map初始化json@Testpublic void test1(){Map<String, Object> map = new LinkedHashMap<String, Object>();map.put("name", "孙笑川");map.put("age", 25);map.put("height", 1.70);map.put("major", new String[] { "理发", "挖掘机" });map.put("hasGirlFriend", false);map.put("car", null);map.put("house", null);//null作为value时,转换成json后不会保存JSONObject json1 = new JSONObject(map);System.out.println(json1.toString());Map map2 = json1.toMap();System.out.println(map2.toString());}可以看到,当value为null时,转化为json后不会保存,会直接抛弃。

使⽤javabean初始化json//javaBeanclass Person {public String name;public int age;public String idCard;//省略getter&setter}//使⽤javaBean初始化json@Testpublic void test2(){Person person = new Person();person.setName("孙亚龙");person.setAge(30);person.setIdCard("512445546565164641212");JSONObject json2 = new JSONObject(person);System.out.println(json2.toString());}直接创建JSONObject @Testpublic void test3(){JSONObject json3 = new JSONObject();Object nullObj = null;json3.put("name", "孙悟空");json3.put("changeTimes", 72);json3.put("name", "MonkeySun"); //put⽅法:value保留原格式,若key相等,value会覆盖原值json3.put("isHuman", false);json3.append("nickName", "齐天⼤圣"); //append⽅法:value存放在数组中,若key相等,value会覆盖原值json3.append("nickName", "弼马温");json3.accumulate("Teacher", "元始天尊"); //accmulate⽅法,和append⽅法⼀样json3.accumulate("Teacher", "唐三藏");System.out.println(json3.toString());}1.2创建JSONArray对象 ⽤给定的字符串初始化JSONArray对象,字符串最外层必须为中括号包裹: @Testpublic void test12(){String jsonString = "['white','卢本伟','芦苇','卢姥爷']";JSONArray jsonArray = new JSONArray(jsonString);for (Object object : jsonArray) {System.out.println(object);}}直接创建JSONArray对象: 创建⼀个空的JSONArray对象,使⽤put传值@Testpublic void test_1(){JSONArray jsonArray = new JSONArray();//1.put(value)⽅法jsonArray.put("孙悟空");//2.put(index value)⽅法jsonArray.put(1,"{'变化':72,'武器',⾦箍棒}");System.out.println(jsonArray);}2.解析json2.1官⽅json包解析 使⽤官⽅json包解析时,需要下载json官⽅jar包,并导⼊ 下载地址(maven仓库): 导⼊jar包:import org.json.JSONArray;import org.json.JSONObject;待解析的字符串是简单对象类型,被⼤括号{}包围时:@Testpublic void test6(){//待解析的json字符串String jsonString = "{'name':'卢本伟','age':24,'Position':'Mid'}";//因为json字符串是⼤括号包围,所以⽤JSONObject解析JSONObject json = new JSONObject(jsonString);String name = json.getString("name");int age = json.getInt("age");String position = json.getString("Position");System.out.println("姓名:"+name);System.out.println("年龄:"+age);System.out.println("位置"+position);}待解析的字符串是数组类型,被中括号[]包围时:@Testpublic void test7(){//待解析的json字符串String jsonString = "['卢本伟','white','卢伟','五五开']";//因为json字符串是⼤括号包围,所以⽤JSONArray解析JSONArray jsonArray = new JSONArray(jsonString);//遍历即可,foreach或for循环for (Object name : jsonArray) {System.out.println(name);待解析的字符串既有中括号[]、⼜有⼤括号[]包围时,逐层解析@Testpublic void test5(){//待解析的json字符串String jsonString = "{'name':'卢本伟','age':24,'Hero':{'name':'Fizz','Position':'Mid','charactor':'killer'},'nickNames':['五五开','芦苇','white'],'Honors':[{'year':2011,'name':'TGA总决赛冠军'},{'year':2013,'name':'S3全球总决赛中国区冠军'},{'year':2013,'na try {//因为json字符串是⼤括号包围,所以⽤JSONObject解析JSONObject json = new JSONObject(jsonString);/** 普通元素,根据类型直接获取*/String name = json.getString("name");int age = json.getInt("age");System.out.println("姓名:"+name);System.out.println("年龄:"+age);System.out.println("————————————————————————————————");/** 属性⼤括号包括,先获取JSONObject对象*/JSONObject hero = json.getJSONObject("Hero");String hero_name = hero.getString("name");String hero_position = hero.getString("Position");String hero_charactor = hero.getString("charactor");System.out.println("擅长英雄:");System.out.println("英雄名:"+hero_name);System.out.println("位置:"+hero_position);System.out.println("英雄定位:"+hero_charactor);System.out.println("————————————————————————————————");/** 属性被中括号包括,获取JSONArray对象,遍历即可*/System.out.println("外号:");JSONArray nickNames = json.getJSONArray("nickNames");for (Object nickName : nickNames) {System.out.println(nickName);}System.out.println("————————————————————————————————");/** 属性中既有中括号包括,⼜嵌套了⼤括号,⼀层层获取即可*/JSONArray Honors = json.getJSONArray("Honors");System.out.println("所获荣誉:");for(int i=0;i<Honors.length();i++){JSONObject honor = Honors.getJSONObject(i);int honor_year = honor.getInt("year");String honor_name = honor.getString("name");System.out.println(honor_year+" : "+ honor_name);}}catch(Exception e){System.out.println(e.getMessage());}}2.2fastjson解析fastjson是阿⾥巴巴开源产品之⼀,解析速度快。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java不像PHP解析和生产JSON总是一个比较痛苦的过程。

但是使用JSONObject和JSONArray会让整个过程相对舒服一些。

需要依赖的包:commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar
1. 创建一个JSONObject对象:
package .video.resource.controller.web;
import java.util.ArrayList;
import java.util.HashMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
//JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式 //创建JsonObject第一种方法
JSONObject jsonObject = new JSONObject();
jsonObject.put("UserName", "ZHULI");
jsonObject.put("age", "30");
jsonObject.put("workIn", "ALI");
System.out.println("jsonObject1:" + jsonObject);
//创建JsonObject第二种方法
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("UserName", "ZHULI");
hashMap.put("age", "30");
hashMap.put("workIn", "ALI");
System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));
//创建一个JsonArray方法1
JSONArray jsonArray = new JSONArray();
jsonArray.add(0, "ZHULI");
jsonArray.add(1, "30");
jsonArray.add(2, "ALI");
System.out.println("jsonArray1:" + jsonArray);
//创建JsonArray方法2
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("ZHULI");
arrayList.add("30");
arrayList.add("ALI");
System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));
//如果JSONArray解析一个HashMap,则会将整个对象的放进一个数组的值中
System.out.println("jsonArray FROM HASHMAP:" +
JSONArray.fromObject(hashMap));
//组装一个复杂的JSONArray
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("UserName", "ZHULI");
jsonObject2.put("age", "30");
jsonObject2.put("workIn", "ALI");
jsonObject2.element("Array", arrayList);
System.out.println("jsonObject2:" + jsonObject2);
}
}
结果:
jsonObject1:{"UserName":"ZHULI","age":"30","workIn":"ALI"}
jsonObject2:{"workIn":"ALI","age":"30","UserName":"ZHULI"}
jsonArray1:["ZHULI","30","ALI"]
jsonArray2:["ZHULI","30","ALI"]
jsonArray FROM HASHMAP:[{"workIn":"ALI","age":"30","UserName":"ZHULI"}] jsonObject2:{"UserName":"ZHULI","age":"30","workIn":"ALI","Array":["ZHULI","30","ALI"]}
解析JSON字符串:
package .video.resource.controller.web;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
String jsonString =
"{\"UserName\":\"ZHULI\",\"age\":\"30\",\"workIn\":\"ALI\",\"Array\":[\"ZHULI\",\"3 0\",\"ALI\"]}";
//将Json字符串转为java对象
JSONObject obj = JSONObject.fromObject(jsonString);
//获取Object中的UserName
if (obj.has("UserName")) {
System.out.println("UserName:" + obj.getString("UserName"));
}
//获取ArrayObject
if (obj.has("Array")) {
JSONArray transitListArray = obj.getJSONArray("Array");
for (int i = 0; i < transitListArray.size(); i++) {
System.out.print("Array:" + transitListArray.getString(i) + " "); }
}
}
}
返回:
UserName:ZHULI
Array:ZHULI Array:30 Array:ALI。

相关文档
最新文档