对嵌套对象使用 objectmapper
Using objectmapper for nested objects
我在另一个对象中有一个对象。当我使用 ObjectMapper 询问 Servlet.java
中的 key1
值时,我将得到 A(key1={key2=[1, 5, 7]})
,但我想知道如何分离 key2
列表值。
字符串输入:{"key1":{"key2":[1,5,7]}}
最终结果:13
-> calculated from key2 array values (1 + 5 + 7)
基本上,我已经完成了所有事情,但是仍然缺少从 key2 获取值。
A.java
package servlet;
import lombok.Data;
@Data
public class A {
public Object key1;
}
B.java
package servlet;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class B{
List<Integer> key2 = new ArrayList<>();
}
Servlet.java
package servlet;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.stream.Collectors;
@WebServlet("/validate")
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
response.getWriter().print("Hello!");
}
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
String input = request.getReader().lines().collect(Collectors.joining("/n"));
A a = new ObjectMapper().readValue(input, new TypeReference<A>() {});
System.out.println(a); // A(key1={key2=[1, 5, 7]})
System.out.println(a.getKey1()); // {key2=[1, 5, 7]}
// Object in object ?
int sum = 0;
String output = new ObjectMapper().writeValueAsString(sum);
response.getWriter().write(output);
}
}
如何从中分离出 key2
来计算 key2 数组值的总和?
另一个限制是我不能使用拆分、替换、匹配等
所以基本上,我只需要使用 B class 而不是 Object
package servlet;
import lombok.Data;
@Data
public class A {
public B key1;
}
并在 servlet 中从 A class 询问 key1、key2 并循环它们
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
String input = request.getReader().lines().collect(Collectors.joining("/n"));
A a = new ObjectMapper().readValue(input, new TypeReference<A>() {});
int sum = 0;
for (Integer b: a.getKey1().getKey2()) {
sum += b;
}
String output = new ObjectMapper().writeValueAsString(sum);
response.getWriter().write(output);
}
我在另一个对象中有一个对象。当我使用 ObjectMapper 询问 Servlet.java
中的 key1
值时,我将得到 A(key1={key2=[1, 5, 7]})
,但我想知道如何分离 key2
列表值。
字符串输入:{"key1":{"key2":[1,5,7]}}
最终结果:13
-> calculated from key2 array values (1 + 5 + 7)
基本上,我已经完成了所有事情,但是仍然缺少从 key2 获取值。
A.java
package servlet;
import lombok.Data;
@Data
public class A {
public Object key1;
}
B.java
package servlet;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class B{
List<Integer> key2 = new ArrayList<>();
}
Servlet.java
package servlet;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.stream.Collectors;
@WebServlet("/validate")
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
response.getWriter().print("Hello!");
}
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
String input = request.getReader().lines().collect(Collectors.joining("/n"));
A a = new ObjectMapper().readValue(input, new TypeReference<A>() {});
System.out.println(a); // A(key1={key2=[1, 5, 7]})
System.out.println(a.getKey1()); // {key2=[1, 5, 7]}
// Object in object ?
int sum = 0;
String output = new ObjectMapper().writeValueAsString(sum);
response.getWriter().write(output);
}
}
如何从中分离出 key2
来计算 key2 数组值的总和?
另一个限制是我不能使用拆分、替换、匹配等
所以基本上,我只需要使用 B class 而不是 Object
package servlet;
import lombok.Data;
@Data
public class A {
public B key1;
}
并在 servlet 中从 A class 询问 key1、key2 并循环它们
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
String input = request.getReader().lines().collect(Collectors.joining("/n"));
A a = new ObjectMapper().readValue(input, new TypeReference<A>() {});
int sum = 0;
for (Integer b: a.getKey1().getKey2()) {
sum += b;
}
String output = new ObjectMapper().writeValueAsString(sum);
response.getWriter().write(output);
}