java常用json解析数据方法

这篇博客介绍了Java中解析JSON数据的方法,特别是在日常开发中如何获取JSON对象的特定值。文章提到了将JSON数据转化为List或String的形式,并讨论了在特定场景下将JSON转换为XML的原因,例如在实现表单导入导出功能时。转换代码中使用了Java的JAXB工具类进行XML的生成。
摘要由CSDN通过智能技术生成

java常用json解析数据方法

在日常开发中,常用的java 解析json数据笔记

 {
  id: "12e3232r34r334t34t3",
 code: "FieldColumn",
 fieldType: "FieldColumn",
 propertiesList: [
 {
code: "PropName",
value: "791b025ac3a116a12e86a42e0f558f0c",
widget: "FieldSubTable",
 },
code: "PropTableName",
 value: "tableHead2"
 },
{
code: "PropType", 
type: "text",
 value: "", attr: ""
},
{
code: "PropReadOnly", 
value: false,
cal: ""
},
{
code: "PropBT", 
value: false
},
{
code: "PropSubTableId",
 index: 2,
 value: "d8be1d4dffcf7944ee5a7bfc7dc0f789"
}
 ]
 }
​

类似这种结构的json数据,我们具体想拿到它的一部分值,我们该如何操作呢?

首先,我们从数据可以看出这是一个{[{},{},{},{},{}......]}的数据集合,它里面的数据分别是的形式

code: "PropSubTableId",
​
 index: 2,
​
 value: "d8be1d4dffcf7944ee5a7bfc7dc0f789"

所以我们可以把这个json数据集合转变为一个list<>的形式接收一下,也可以把它同化为一个string的字符串;具体代码如下:

//使用这两个注解是为了将我传的值方便其他功能引用
@Data
@XmlRootElement 
//这个解释代码类PropSubColumn继承了BaseProperty类
public class PropSubColumn extends BaseProperty {
    //我需要往xml里传值,所以定义了id,parentCode,propBT...等私有参数;方便传值
    private String id;
    private String parentCode;
    private Boolean propBT;
    private String tableName;
    private String tableLabel;
    private Boolean show;
    private String propWidth;
    private PropType propType;
    private PropReadOnly propReadOnly;
    private PropSubTableId propSubTableId;
    //下面方法是处理传过来的jsonObject数据
public static PropSubColumn format(JSONObject property) {
        PropSubColumn propSubColumn = new PropSubColumn();
    //因为传过来的数据是key,value形式的json字符串,所以可直接传值
        propSubColumn.setId(property.getString("id"));
        propSubColumn.setParentCode((String) property.get("parentCode"));
处理嵌套json格式的数据。。。 public static void main(String[] args) { // 官方API http://www.json.org/java/ /* 购物车中信息 goods_cart={cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}}; * **/ try{ String s0 = "{cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}};"; String s= java.net.URLDecoder.decode(s0, "utf-8"); System.out.println(s); JSONObject o = new JSONObject(s); System.out.println(o.get("cart_1325036696007")); //根据属性,获取值 System.out.println(o.toString()); //得到字符串 System.out.println(o.names().get(2)); //获取对象中第三组属性名 System.out.println(o.names().length()); //获取对象中属性个数 //System.out.println(o.names().getJSONArray(1)); //获取对象中属性个数 //names(jsonObjectName) 私有方法 获取该对象的所有属性名,返回成JSONArray。 //JSONObject.getNames(jsonObjectName) 静态方法 获取对象的所有属性名,返回成数组。 System.out.println(JSONObject.getNames(o.getJSONObject("cart_1325036696007"))[1]); System.out.println(o.getJSONObject("cart_1325036696007").names().get(1)); System.out.println(o.length()); //共有几组对象 System.out.println(o.has("cart_1325036696007")); //有无该该值 /* 遍历json中的每一组元素*/ String name = null; JSONObject t_o = null; for(int i=0; i<o.length(); i++){ name = JSONObject.getNames(o)[i]; System.out.println("商品项ID:"+name); t_o = o.getJSONObject(name); for(int j=0; j< t_o.length(); j++){ name = JSONObject.getNames(t_o)[j]; System.out.print(name+":"+t_o.get(name)+" "); } System.out.println(); } }catch(Exception e){ e.printStackTrace(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值