记一次JACKSON递归性质序列化错误

记一次JACKSON递归性质序列化错误

错误内容

"example":{"distinct":false,"forUpdate":false,"oredCriteria":[{"criteria":[{"condition":"order_no  like","value":"202010091957930","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"acct_name  like","value":"新品测试","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"state =","value":0,"andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"order_type =","value":"PurchaseOrder","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"ROW_ID =","value":"256829215679185139","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"CREATED_BY =","value":"210773580093325377","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"LAST_UPD_BY =","value":"2514205957971","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"CORP_ID =","value":"0","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"ORG_ID =","value":"86608101767122944","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"POSTN_ID =","value":"0","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false}],"andOr":"and","valid":true,"allCriteria":[{"condition":"order_no  like","value":"202010091957930","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"acct_name  like","value":"新品测试","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"state =","value":0,"andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"order_type =","value":"PurchaseOrder","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"ROW_ID =","value":"256829215679185139","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"CREATED_BY =","value":"210773580093325377","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"LAST_UPD_BY =","value":"2514205957971","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"CORP_ID =","value":"0","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"ORG_ID =","value":"86608101767122944","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false},{"condition":"POSTN_ID =","value":"0","andOr":"and","noValue":false,"singleValue":true,"betweenValue":false,"listValue":false}]}],"entityClass":"com.hand.business.quanyounew.model.entity.SupplementOrder","propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":{"orderType":{"table":{"propertyMap":

这里DEBUG跟踪到的原因是restcontroller在filter进行invoke的时候选择了Jackson选择器,但原因并不是Jackson的问题。

因为我发现在对内置属性进行遍历的时候,调用的是其get方法,而我在业务内置基础对象baseEntity中写了一个方法

public Example getExample() {
        return this.fieldsToExample(this.initFields());
    }

这个方法是典型的get方法,对其扫描并装载返回JSON的MAP的时候,自然而然就扫描到了,所以将他当成了一个属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个 Java 递归序列化树形 JSON 数据的示例代码: ```java import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonTreeDeserializer { private static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"root\",\"children\":[{\"id\":2,\"name\":\"child1\",\"children\":[{\"id\":3,\"name\":\"grandchild1\"},{\"id\":4,\"name\":\"grandchild2\"}]},{\"id\":5,\"name\":\"child2\",\"children\":[{\"id\":6,\"name\":\"grandchild3\"},{\"id\":7,\"name\":\"grandchild4\"}]}]}"; try { JsonNode rootNode = mapper.readTree(json); Node tree = deserialize(rootNode); System.out.println(tree); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static Node deserialize(JsonNode node) { int id = node.get("id").asInt(); String name = node.get("name").asText(); Node tree = new Node(id, name); JsonNode childrenNode = node.get("children"); if (childrenNode != null && childrenNode.isArray()) { for (JsonNode childNode : childrenNode) { Node child = deserialize(childNode); tree.addChild(child); } } return tree; } } class Node { private int id; private String name; private List<Node> children; public Node(int id, String name) { this.id = id; this.name = name; this.children = new ArrayList<Node>(); } public void addChild(Node node) { this.children.add(node); } @Override public String toString() { return "Node [id=" + id + ", name=" + name + ", children=" + children + "]"; } } ``` 这个示例代码使用了 Jackson 库来进行 JSON 反序列化。首先读取 JSON 数据,然后递归地反序列化每个节点,并构建树形结构。最后输出树形结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值