ace arc 出错 earch 方法 cit from 实体类
思路:首先将 JSON 格式的数据转换成 JSONObject,然后将 JSONObject 转换成 Java 的实体类(其中类属性包括 List 等类型)
Java 实体类:
- SearchFilter类
- public class SearchFilter {
- private String groupOp;
- private List rules;
- public String getGroupOp() {
- return groupOp;
- }
- public void setGroupOp(String groupOp) {
- this.groupOp = groupOp;
- }
- public List getRules() {
- return rules;
- }
- public void setRules(List rules) {
- this.rules = rules;
- }
- SearchRule类:
- public class SearchRule {
- private String field;
- private String op;
- private String data;
- public String getField() {
- return field;
- }
- public void setField(String field) {
- this.field = field;
- }
- public String getOp() {
- return op;
- }
- public void setOp(String op) {
- this.op = op;
- }
- public String getData() {
- return data;
- }
- public void setData(String data) {
- this.data = data;
- }
- }
解析 JSon 格式字符串的方法
- public SearchFilter jsonToSearchFilter(String filters) {
- SearchFilter searchFilter = null;
- try {
- JSONObject jsonobject = JSONObject.fromObject(filters); //将json格式的字符串转换成JSONObject 对象
- JSONArray array = jsonobject.getJSONArray("rules"); //如果json格式的字符串里含有数组格式的属性,将其转换成JSONArray,以方便后面转换成对应的实体
- List rules = new ArrayList();
- for (int i = 0; i < array.size(); i++) {
- JSONObject object = (JSONObject) array.get(i); //将array中的数据进行逐条转换
- SearchRule rule = (SearchRule) JSONObject.toBean(object, SearchRule.class); //通过JSONObject.toBean()方法进行对象间的转换
- rules.add(rule);
- }
- String groupOp = jsonobject.getString("groupOp"); //简单的直接获取值
- searchFilter = new SearchFilter(); //对SearchFilter对象进行组装
- searchFilter.setGroupOp(groupOp);
- searchFilter.setRules(rules);
- } catch(Exception e) {
- System.out.println("filters=" + filters.toString() + ".json转换成实体类出错");
- e.printStackTrace();
- }
- return searchFilter;
- }
这里只进行了 SearchFilter 类中 list<SearchRule>rule 属性的对象转换,因为它是一个 SearchRule 对象数组,需要单独拿出来进行 json 转换成对象,如果直接对 filter 进行 SearchFilter 进行实体转换会报错。如果对象中不含有 list,array,map 等集合,可以像 8-9 行一样进行对象转换。
测试:
- 1 public static void main(String[] args) {
- 2 UserMgmtController con = new UserMgmtController();
- 3 String filters = "{\"groupOp\": \"OR\",\"rules\": [{\"field\": \"realname\",\"op\": \"eq\"," + 4 "\"data\": \"1234\"},{\"field\": \"cityCode\",\"op\": \"ne\",\"data\": \"5678\"}]}";
- 5 SearchFilter searchFilter = con.jsonToSearchFilter(filters);
- 6 System.out.println("gop=" + searchFilter.getGroupOp() + " rules.size=" + searchFilter.getRules().size());
- 7
- }结果:gop = OR rules.size = 2
将 JSON 数据转换成 Java 的实体类
来源: http://www.bubuko.com/infodetail-2230093.html