json转成实体bean,并解析出多层次属性信息

目的:将json转成实体bean,并解析出多层次属性信息
此为json串:
String json = "

{"jsonValue":[{"addTime":1431078503000,"attriDetail":"[{\"group\":11202,\"name\":\"基本参数\",\"sort\":1,\"attribute\":[{\"id\":200511,\"name\":\"项目区域要求\",\"unit\":\"\",\"typeid\":2,\"is_full\":true,\"sort\":1,\"detail\":[{\"id\":13004689,\"detail\":\"北京\",\"sort\":1,\"checked\":\"\"},{\"id\":13004690,\"detail\":\"天津\",\"sort\":2,\"checked\":\"\"},{\"id\":13004691,\"detail\":\"河北\",\"sort\":3,\"checked\":\"\"},{\"id\":13004692,\"detail\":\"山西\",\"sort\":4,\"checked\":\"\"},{\"id\":13004693,\"detail\":\"内蒙古\",\"sort\":5,\"checked\":\"checked\"},{\"id\":13004694,\"detail\":\"辽宁\",\"sort\":6,\"checked\":\"\"},{\"id\":13004695,\"detail\":\"吉林\",\"sort\":7,\"checked\":\"\"},{\"id\":13004696,\"detail\":\"黑龙江\",\"sort\":8,\"checked\":\"\"},{\"id\":13004697,\"detail\":\"江苏\",\"sort\":9,\"checked\":\"\"},{\"id\":13004698,\"detail\":\"上海\",\"sort\":10,\"checked\":\"\"},{\"id\":13004699,\"detail\":\"浙江\",\"sort\":11,\"checked\":\"\"},{\"id\":13004700,\"detail\":\"安徽\",\"sort\":12,\"checked\":\"checked\"},{\"id\":13004701,\"detail\":\"福建\",\"sort\":13,\"checked\":\"\"},{\"id\":13004702,\"detail\":\"江西\",\"sort\":14,\"checked\":\"\"},{\"id\":13004703,\"detail\":\"山东\",\"sort\":15,\"checked\":\"\"},{\"id\":13004704,\"detail\":\"河南\",\"sort\":16,\"checked\":\"\"},{\"id\":13004705,\"detail\":\"湖北\",\"sort\":17,\"checked\":\"\"},{\"id\":13004706,\"detail\":\"湖南\",\"sort\":18,\"checked\":\"checked\"},{\"id\":13004707,\"detail\":\"广东\",\"sort\":19,\"checked\":\"checked\"},{\"id\":13004708,\"detail\":\"广西\",\"sort\":20,\"checked\":\"\"},{\"id\":13004709,\"detail\":\"海南\",\"sort\":21,\"checked\":\"\"},{\"id\":13004710,\"detail\":\"重庆\",\"sort\":22,\"checked\":\"\"},{\"id\":13004711,\"detail\":\"四川\",\"sort\":23,\"checked\":\"\"},{\"id\":13004712,\"detail\":\"贵州\",\"sort\":24,\"checked\":\"\"},{\"id\":13004713,\"detail\":\"云南\",\"sort\":25,\"checked\":\"\"},{\"id\":13004714,\"detail\":\"西藏\",\"sort\":26,\"checked\":\"\"},{\"id\":13004715,\"detail\":\"陕西\",\"sort\":27,\"checked\":\"\"},{\"id\":13004716,\"detail\":\"甘肃\",\"sort\":28,\"checked\":\"\"},{\"id\":13004717,\"detail\":\"青海\",\"sort\":29,\"checked\":\"\"},{\"id\":13004718,\"detail\":\"宁夏\",\"sort\":30,\"checked\":\"\"},{\"id\":13004719,\"detail\":\"新疆\",\"sort\":31,\"checked\":\"\"},{\"id\":13004720,\"detail\":\"香港\",\"sort\":32,\"checked\":\"checked\"},{\"id\":13004721,\"detail\":\"澳门\",\"sort\":33,\"checked\":\"\"},{\"id\":13004722,\"detail\":\"台湾\",\"sort\":34,\"checked\":\"\"}],\"userdata\":\"\"},{\"id\":200512,\"name\":\"加盟金额 \",\"unit\":\"\",\"typeid\":1,\"is_full\":true,\"sort\":2,\"detail\":[{\"id\":13004723,\"detail\":\"1万以下\",\"sort\":1,\"checked\":\"\"},{\"id\":13004724,\"detail\":\"1—3万\",\"sort\":2,\"checked\":\"\"},{\"id\":13004725,\"detail\":\"3—10万\",\"sort\":3,\"checked\":\"checked\"},{\"id\":13004726,\"detail\":\"10—30万\",\"sort\":4,\"checked\":\"\"},{\"id\":13004727,\"detail\":\"30万以上\",\"sort\":5,\"checked\":\"\"}],\"userdata\":\"\"},{\"id\":0,\"name\":\"测试1\",\"unit\":\"\",\"typeid\":0,\"is_full\":false,\"sort\":2,\"detail\":[],\"userdata\":\"测试2\"},{\"id\":0,\"name\":\"你好\",\"unit\":\"\",\"typeid\":0,\"is_full\":false,\"sort\":2,\"detail\":[],\"userdata\":\"哈哈\"},{\"id\":0,\"name\":\"公牛\",\"unit\":\"\",\"typeid\":0,\"is_full\":false,\"sort\":2,\"detail\":[],\"userdata\":\"骑士\"}]}]","categoryCode":"139102103","id":73761923,"memberId":41287423,"name":"asdasdasdasd","pic":"[43249444]","siteId":1,"summary":"asdasd"}],"status":1}  " ;


解决方法1:
一:首先 建立 4 个实体类对象(因为json串中包含有四个实体类信息)
   1.

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author z**
 *
 */
public class Demo1   implements Serializable{
private static final long serialVersionUID = 1L;

 private Long id;

 private int siteId;

 private String memberId;

 private String categoryCode;

 private String addTime;
 private String pic;

 private String summary;

 private String name;

 private String attriDetail;

 private List<Demo2> attriDetails;

 
 
 .....setter and getter  
  @Override
 public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result
    + ((attriDetail == null) ? 0 : attriDetail.hashCode());
  result = prime * result
    + ((categoryCode == null) ? 0 : categoryCode.hashCode());
  result = prime * result + ((id == null) ? 0 : id.hashCode());
  result = prime * result
    + ((memberId == null) ? 0 : memberId.hashCode());
  result = prime * result + ((name == null) ? 0 : name.hashCode());
  result = prime * result + ((pic == null) ? 0 : pic.hashCode());
  result = prime * result + siteId;
  result = prime * result + ((summary == null) ? 0 : summary.hashCode());
  return result;
 }
 @Override
 public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  Information other = (Information) obj;
  if (attriDetail == null) {
   if (other.attriDetail != null)
    return false;
  } else if (!attriDetail.equals(other.attriDetail))
   return false;
  if (categoryCode == null) {
   if (other.categoryCode != null)
    return false;
  } else if (!categoryCode.equals(other.categoryCode))
   return false;
  if (id == null) {
   if (other.id != null)
    return false;
  } else if (!id.equals(other.id))
   return false;
  if (memberId == null) {
   if (other.memberId != null)
    return false;
  } else if (!memberId.equals(other.memberId))
   return false;
  if (name == null) {
   if (other.name != null)
    return false;
  } else if (!name.equals(other.name))
   return false;
  if (pic == null) {
   if (other.pic != null)
    return false;
  } else if (!pic.equals(other.pic))
   return false;
  if (siteId != other.siteId)
   return false;
  if (summary == null) {
   if (other.summary != null)
    return false;
  } else if (!summary.equals(other.summary))
   return false;
  return true;
 }
 @Override
 public String toString() {
  return "Information [id=" + id + ", siteId=" + siteId + ", memberId="
    + memberId + ", categoryCode=" + categoryCode + ", addTime="
    + addTime + ", pic=" + pic + ", summary=" + summary + ", name="
    + name + ", attriDetail=" + attriDetail + "]";
 }

 
}

2.
import java.util.List;
public class Demo2{
 private long group;
 private String name;
 private int sort;
 private List<Demo3> attribute;
.....setter and getter  
}


3.
import java.util.List;
public class Demo3{
 private Long id;
 private String name;
 private String unit;
 private int typeid;
 private boolean is_full;
 private int sort;
 private List<Demo4> detail;
 private String userdata;
 .....setter and getter  
}


4.
 
public class Demo4{
 private Long id;
 private String detail;
 private int sort;
 private String checked;
 
 
 .....setter and getter   
}

/*

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
public class JSONUtil{
public static Object parseJson2ResultBean2(String json, Class type) {
  try {
   List list = parseJson2ResultList(json, type);
   if ((list == null) || (list.isEmpty())) {
    return null;
   }
   return list.get(0);
  } catch (Exception e) {
   throw new JsonParseException(e);
  }
 }

public static List parseJson2ResultList(String json, Class type) {
  Map map = json2Map(json);
  if ((map == null) || (map.isEmpty())) {
   throw new JsonParseException("Json转换失败" + json);
  }
  if (map.containsKey("param:"))
   throw new DubboException("调用接口失败:" + map.get("param:"));
  if (map.containsKey("exception:"))
   throw new DubboException("调用接口失败:" + map.get("exception:"));
  if (!(map.containsKey("jsonValue"))) {
   throw new JsonParseException("Json转换失败,Json串中不包含jsonValue:" + json);
  }
  JSONArray jsonArray = (JSONArray) map.get("jsonValue");
  List result = json2ListBean(jsonArray, type);
  return result;
 }
 
 public static Map json2Map(String json) throws JsonParseException {
  return ((Map) json2Object(json, Map.class));
 }

public static Object json2Object(String json, Class type)
   throws JsonParseException {
  if ((json == null) || (json.trim().length() < 1))
   return null;
  try {
   return JSON.parseObject(json, type);
  } catch (Exception e) {
   throw new JsonParseException("Json转换失败:" + json, e);
  }
 }

public static List json2ListBean(JSONArray jsonArray, Class type) {
  if ((jsonArray == null) || (type == null))
   return null;
  try {
   List list = new ArrayList();
   Iterator iterator = jsonArray.iterator();
   while (iterator.hasNext()) {
    JSONObject jsonObject = (JSONObject) iterator.next();
    Object obj = JSON.toJavaObject(jsonObject, type);
    list.add(obj);
   }
   return list;
  } catch (Exception e) {
   throw new JsonParseException(
     "Json转换失败:" + jsonArray.toJSONString(), e);
  }
 }
 
 }
*/
Demo1 demo1 = (Demo1)JSONUtil.parseJson2ResultBean2(json,Demo1.class);
String attr_detail = demo1.getAttriDetail();
JSONArray jsonarray = JSONArray.fromObject(attr_detail);
List<Demo2> listone = (List<Demo2>)JSONArray.toCollection(jsonarray,Demo2.class);
demo1.setAttriDetails(listone);


return demo1;

创建完的demo对象:

Demo1 demo;

Map map  =  new HashMap();

map.put("demo",demo);

 

html 页面调用:

<#list demo.attriDetails as list>

    <#list list.attribute as attr>

          <tr>
         <td align="right" class="hui hui_lf">${attr.name}:</td>
         <td class="hui bai_rig">

        <#list attr.detail as detail>

                <#if detail.checked == 'checked'>
          ${detail.detail}
            </#if>

        </#list>

             ${attr.userdata}

    </#list>

</#list>

</td>

</tr>

   这样 就可以 调出 你想要的任何数据了。完工。希望有更好的方法 可以 指教。

转载于:https://my.oschina.net/zhangguoqing/blog/414482

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Scala 2.12中使用Gson解析JSON并将其换为任意Bean对象的示例代码如下: ```scala import com.google.gson.Gson case class Person(name: String, age: Int) val json = """{"name": "Alice", "age": 30}""" val gson = new Gson() val person: Person = gson.fromJson(json, classOf[Person]) println(person) ``` 这个示例代码将JSON字符串`{"name": "Alice", "age": 30}`解析为一个`Person`对象,然后打印来。在这个例子中,我们使用了Gson的`fromJson`方法来将JSON解析为一个`Person`对象。我们还使用了`classOf`来获取Person类的实际类型。 如果你想解析任意类型的Bean对象,可以使用Gson的`TypeToken`类来获取泛型类型的实际类型。例如,如果你想解析一个`List[Person]`类型的JSON字符串,可以按照下面的方式使用`TypeToken`: ```scala import com.google.gson.Gson import com.google.gson.reflect.TypeToken case class Person(name: String, age: Int) val json = """[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 40}]""" val gson = new Gson() val personType = new TypeToken[List[Person]] {}.getType() val persons: List[Person] = gson.fromJson(json, personType) println(persons) ``` 这个示例代码将JSON字符串`[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 40}]`解析为一个`List[Person]`对象,然后打印来。在这个例子中,我们使用了Gson的`fromJson`方法来将JSON解析为一个`List[Person]`对象。我们还使用了`TypeToken`来获取泛型类型`List[Person]`的实际类型。 希望这可以帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值