我正在获取JSON字符串,并希望通过JSP在控制台上打印Name值。有人可以建议如何做吗?
String AllCustomLockingCriterias = '{"TemplateArray":[{"Id":16,"Name":"Machine","type":"PM"},
{"Id":17,"Name":"Ethernet","type":"PM"},
{"Id":18,"Name":"Hard Disk","type":"PM"}]}';
我需要的输出:
Machine
Ethernet
Hard Disc
我想开始一个循环,我的输出将是:
Machine
Ethernet
Hard Disc
答案 0 :(得分:1)
Gson gson = new Gson(); TypeToken typeToken = new TypeToken<List<Template>>() {}; Type type = typeToken.getType(); List<Template> templates = gson.fromJson(json, type);
@RequestMapping(value = "/test",method = RequestMethod.GET) public String test(Model model){ model.addAttribute("templates",templates); return "jspFileName"; }
<c:forEach items="${templates}" var = "template"> ${template.name} </c:forEach>
var obj = JSON.parse(json); var array = obj.TemplateArray; array.foreach(function(item) { console.log(item.name); });
答案 1 :(得分:0)
示例:
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readValue(
"{\"TemplateArray\":[{\"Id\":16,\"Name\":\"Machine\",\"type\":\"PM\"}, {\"Id\":17,\"Name\":\"Ethernet\",\"type\":\"PM\"},{\"Id\":18,\"Name\":\"Hard Disk\",\"type\":\"PM\"}]}",
JsonNode.class);
node.at("/TemplateArray").forEach(a -> System.out.println(a.at("/Name")));
打印:
"Machine"
"Ethernet"
"Hard Disk"
答案 2 :(得分:0)
“ fasterxml”或“ jackson”具有Java库,该库能够将JSON字符串转换为TreeNode。然后,您可以访问各个字段。
@Test
public void test() throws IOException {
String AllCustomLockingCriterias = "{\"TemplateArray\":[{\"Id\":16,\"Name\":\"Machine\",\"type\":\"PM\"},\n" +
" {\"Id\":17,\"Name\":\"Ethernet\",\"type\":\"PM\"},\n" +
" {\"Id\":18,\"Name\":\"Hard Disk\",\"type\":\"PM\"}]}";
//create mapper to map JSON string to handy Java object
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readValue(AllCustomLockingCriterias,JsonNode.class);
//fetch value that has field name "TemplateArray"
JsonNode templateArray = rootNode.get("TemplateArray");
//loop over the values in the TemplateArray and extract Name, if present.
for(JsonNode subNode : templateArray){
if(subNode.has("Name")){
System.out.println(subNode.get("Name"));
}
}
}