java 自定义数据结构 转json_jackson如何将复杂的java数据结构转换为json数据?

可以使用jackson吗?

请参考这个代码:package com.dgdr.util;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.alibaba.fastjson.TypeReference;

import com.alibaba.fastjson.serializer.SerializerFeature;

/**

* json操作工具类

*

* @author yangtao

*

*/

public final class JSONUtil {

/**

* 默认json格式化方式

*/

public static final SerializerFeature[] DEFAULT_FORMAT = { SerializerFeature.WriteDateUseDateFormat,

SerializerFeature.WriteEnumUsingToString, SerializerFeature.WriteNonStringKeyAsString,

SerializerFeature.QuoteFieldNames, SerializerFeature.SkipTransientField, SerializerFeature.SortField,

SerializerFeature.PrettyFormat };

private JSONUtil() {

}

/**

* 用自定义模板从json字符串中取值

*

* @param json

* @param template demo:items.items.x_item.0[].open_iid---->0[]:[]表示数组,0表示取第几个

* @return

* @author yangtao

*/

public static String getJSONValueByTemplate(String json, String template) {

String keys[] = template.split("\\.");

for (String key : keys) {

if (json == null) {

return null;

}

if (key.indexOf("[]") > 0) {

json = JSON.parseObject(json, new TypeReference>(){}).get(Integer.parseInt(key.replace("[]", "")));

} else{

json = JSON.parseObject(json).getString(key);

}

}

return json;

}

/**

* JSON转Map

* @param jsonStr

* @return

*/

@SuppressWarnings("rawtypes")

public static Map parseJSON2Map(String jsonStr){

Map map = new HashMap();

//最外层解析

JSONObject json = JSONObject.parseObject(jsonStr);

for(Object k : json.keySet()){

Object v = json.get(k);

//如果内层还是数组的话,继续解析

if(v instanceof JSONArray){

//数组对象又分为两种(简单数组或键值对)

List list = parseJSON2List(json.get(k).toString());

map.put((String)k, list);

} else {

map.put((String)k, v);

}

}

return map;

}

/**

* JSON转List>

* @param json

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public static List> parseJSON2List(String json){

JSONArray jsonArray = JSONArray.parseArray(json);

List list = new ArrayList();

for (Object object : jsonArray) {

try {

JSONObject jsonObject = (JSONObject) object;

HashMap map = new HashMap();

for (Map.Entry entry : jsonObject.entrySet()) {

if(entry.getValue() instanceof JSONArray){

map.put((String)entry.getKey(), parseJSON2List(entry.getValue().toString()));

}else{

map.put((String)entry.getKey(), entry.getValue());

}

}

list.add(map);

} catch (Exception e) {

list.add(object);

}

}

return list;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值