Json内容:
{
"render": "alpaca",
"option": {
"fields": {
"txtContent": {
"type": "textarea"
},
"rdoTest": {
"type": "radio",
"optionLabels": ["测试1", "测试2", "测试3"],
"sort": false,
"removeDefaultNone": true
},
"ddlTest": {
"type": "select",
"optionLabels": ["下拉1", "下拉2", "下拉3"],
"sort": false,
"removeDefaultNone": true
}
}
}
}
问题:获取、替换所有OptionLiabels的值
解决:
ObjectMapper mapper = new ObjectMapper();
ObjectNode contentNode = (ObjectNode)mapper.readTree("jsonStr");
JsonNode optionNode = contentNode.findValue("fields");
if (optionNode != null && optionNode instanceof ObjectNode) {
Iterator<Map.Entry<String, JsonNode>> iterator = optionNode.fields();
while (iterator.hasNext()) {
Map.Entry<String, JsonNode> p = iterator.next();
JsonNode subNode = p.getValue();
if (subNode != null && subNode.has("optionLabels")) {
JsonNode nodes = subNode.get("optionLabels");
List<String> keyList = new ArrayList<>();
for (JsonNode node : nodes) {
String val = node.asText();
String key = TranslateUtility.getTransKey(val);
transInfo.put(val, key);
keyList.add(key);
}
ObjectMapper mapper = new ObjectMapper();
ArrayNode array = mapper.valueToTree(keyList);
ObjectNode companyNode = (ObjectNode) subNode;
companyNode.putArray("optionLabels").addAll(array);
}
}
}
Json内容:
{
"render": "alpaca",
"schema": {
"type": "object",
"properties": {
"txtValue": {
"title": "文本",
"maxLength": "10",
"type": "string"
},
"txtNuber": {
"title": "数字",
"minimum": "0",
"maximum": "10",
"type": "number"
},
"txtContent": {
"title": "多行文本框",
"maxLength": "500",
"type": "string"
},
"rdoTest": {
"title": "单选框",
"type": "string",
"enum": ["option-1", "option-2", "option-3"]
},
"ddlTest": {
"title": "下拉框",
"type": "string",
"enum": ["option-1", "option-2", "option-3"]
},
"cboTest": {
"title": "多选框",
"type": "array",
"items": {
"type": "string",
"enum": ["option-1", "option-2", "option-3"]
}
},
"txtDate": {
"title": "日期控件",
"type": "string",
"format": "date"
},
"fileUpload": {
"title": "文件上传",
"type": "array",
"extType": "file"
}
},
"dependencies": {}
}
}
问题:获取、替换Titile的值
ObjectMapper mapper = new ObjectMapper();
ObjectNode contentNode = (ObjectNode)mapper.readTree("jsonStr");
JsonNode proNode = contentNode.findValue("properties");
if (proNode != null && proNode instanceof ObjectNode) {
Iterator<Map.Entry<String, JsonNode>> iterator = proNode.fields();
while (iterator.hasNext()) {
Map.Entry<String, JsonNode> p = iterator.next();
JsonNode subNode = p.getValue();
if (subNode != null && subNode.has("title")) {
String type = subNode.findValue("title").textValue();
String key = TranslateUtility.getTransKey(type);
transInfo.put(type, key);
((ObjectNode) subNode).put("title", key);
}
}
}
// todo...