java jackson:从 url rest web 服务调用 pojo(带有内部 pojo)作为 json 并将它们映射回 pojo
java jackson: get from url rest web service call pojo's (with inner pojo's) as json and map them back to pojo
我用的是jackson,场景是:
- 在客户端 (Android) 中生成 url 对 Web 服务的调用
- Web 服务 return "complex pojo"(与其他 pojo 一样有 class 个成员)作为 json
- 返回客户端将 json 映射到 pojo
我不知道如何完成此代码以使事情正常进行,尽管我进行了全面搜索并找出了以下起点,但后来我完全堆积起来,我需要帮助...
"complex pojo":
public class MyPojo {
private List<MyOtherPojo> myOtherPojo;
private List<HashMap<String, String>> listOfMaps;
private Map<String, String> map;
//Constructors, getters & setters
}
客户端代码:
String wsURI = "server.com/myservice?param1=a¶m2=b";
try {
URL url = new URL(wsURI);
URLConnection connection = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder sbuilder = new StringBuilder();
String aux = "";
while ( (aux = in.readLine()) != null) {
sbuilder.append(aux);
}
ObjectMapper mapper = new ObjectMapper();
//TODO get myPojo object from his representation as string at sbuilder.toString();
myPojo = ???;
} catch (Exception e) {}
感谢@peeskillet 的解决方案:
MyPojo myPojo = mapper.readValue(connection.getInputStream(), MyPojo.class);
我用的是jackson,场景是:
- 在客户端 (Android) 中生成 url 对 Web 服务的调用
- Web 服务 return "complex pojo"(与其他 pojo 一样有 class 个成员)作为 json
- 返回客户端将 json 映射到 pojo
我不知道如何完成此代码以使事情正常进行,尽管我进行了全面搜索并找出了以下起点,但后来我完全堆积起来,我需要帮助...
"complex pojo":
public class MyPojo { private List<MyOtherPojo> myOtherPojo; private List<HashMap<String, String>> listOfMaps; private Map<String, String> map; //Constructors, getters & setters }
客户端代码:
String wsURI = "server.com/myservice?param1=a¶m2=b"; try { URL url = new URL(wsURI); URLConnection connection = url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder sbuilder = new StringBuilder(); String aux = ""; while ( (aux = in.readLine()) != null) { sbuilder.append(aux); } ObjectMapper mapper = new ObjectMapper(); //TODO get myPojo object from his representation as string at sbuilder.toString(); myPojo = ???; } catch (Exception e) {}
感谢@peeskillet 的解决方案:
MyPojo myPojo = mapper.readValue(connection.getInputStream(), MyPojo.class);