[英]How to integrate with ASP.net Web API application from Java Client
[英]Restlet Android client - How to map JSON response from ASP.NET Web API to my Java Objects
我有点难以理解如何做到最好,并将我的JASON响应从ASP.NET Web API服务器映射到我的Java类中。
我使用此代码来请求服务器数据。
ClientResource res = new ClientResource(ADDRESS_URL + "/exed/students/");
Representation rep = res.get();
try {
Log.d(TAG, rep.getText());
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}
我可以成功检索此JSON表示形式。
{"$id":"1","StudentId":1,"RowVersion":"AAAAAAAAB9M=","User":{"$id":"2","UserId":1,"Username":"1","Password":"1","UserTypeId":1,"FirstName":"George","LastName":"Taskos","RowVersion":"AAAAAAAAB9I=","Student":{"$ref":"1"},"Teacher":null,"UserType":null}}
现在,我有了这些Java类。
用户。
public class User implements Serializable {
// Private fields
//
private int userId;
private String username;
private String password;
private int userTypeId;
private String firstName;
private String lastName;
private String userType;
private Timestamp rowVersion;
// Setters
// Getters....
}
还有学生。
public class Student extends User implements Serializable {
// Private fields
private List<ClassType> classes;
private List<ExamTaken> examsTaken;
private Timestamp rowVersionStudent;
}
如何将表示形式检索到我的对象中。 我已经看了太多了,我现在想得到解决方案真是头晕目眩。 我不熟悉Java服务器端或任何东西,所以我想这就是为什么我对在教程中阅读的内容感到沮丧,而且我认为该站点中缺少很多东西,或者没有明确解释。
任何简单的例子至少都像我对SQLite游标所做的那样,将值取出并放入我的对象中。 从响应中反序列化也将非常棒:)
[编辑]
在Raw建议之后,我最终得到了这段代码。
ClientResource res = new ClientResource(ADDRESS_URL + "/exed/students/");
Representation rep = res.get();
try {
JSONObject response = new JSONObject(rep.getText());
Log.d(TAG, rep.getText());
JSONObject user = response.getJSONObject("User");
Log.d(TAG, "User: " + user.toString());
JSONObject student = response.getJSONObject("Student");
Log.d(TAG, "Student: " + student.toString());
Log.d(TAG, "FirstName: " + user.getString("FirstName"));
} catch (Exception e) {
Log.d(TAG, "Exception: " + e.getMessage());
}
但是,此消息出现异常:异常:println需要一条消息
Stacktrace打印以下内容:异常:android.util.Log.println_native(本机方法)
和未处理的异常是这样的:
03-06 13:07:14.668: ERROR/AndroidRuntime(25353): FATAL EXCEPTION: Thread-13908
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:155)
at com.tech.ed.data.access.WebServiceRepository$1.run(WebServiceRepository.java:74)
at java.lang.Thread.run(Thread.java:856)
我不明白这是什么意思!
谢谢。
看起来您只有一系列JSONObjects和字符串。 只需为整个结果制作一个JSONObject
JSONObject response = new JSONObject(representation);
然后提取出用户和学生对象
JSONObject user = response.getJSONObject("User");
JSONObject student = response.getJSONObject("Student");
然后,您可以从对应的对象中获取任何嵌套的字符串,整数或其他内容,例如
String firstName = user.getString("FirstName");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.