Android客户端-如何从ASP映射JSON响应.. NET Web API到我的Java对象



我有点难以理解如何从ASP中做出最好的和映射我的JASON响应。. 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游标所做的那样。响应的反序列化也很棒:)

[编辑]

在原始建议之后,我最终得到了这个代码。

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());
               }
Exception: println需要一条消息

Stacktrace打印这个:Exception: 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");

最新更新