使用Realm组织复杂json响应的问题

时间:2016-10-01 17:58:27

标签: android json gson realm

我正在尝试使用我的Android应用程序的域。我试着看一些关于领域的简单例子。我能够使用领域设置项目,现在想要开始实现它,但是面临根据我的json响应生成分类的问题。

以下是我将使用的json的一个例子

{
    "Status":true,
    "Message":"Success",
    "ds":{
          "Table1":[{
                     "CustomerId":"1",
                     "CustomerName":"TestUser",
                     "CustomerNo":"100001",
                     "CustomerUrl":"http://abc-001-site10.itempurl.com",
                     "IsActive":true}]}}

我需要使用RealmObject为此生成POJO类,我怎样才能生成它,因为我完全被难倒了。

我也将使用GSON。

需要一些指导。

1 个答案:

答案 0 :(得分:1)

这项工作有一个很好的工具 - 转到http://www.jsonschema2pojo.org/并自行测试。

以下是您的JSON转换为POJO类,其中包含用于GSON的getter和setter:

-----------------------------------com.example.Ds.java-----------------------------------

package com.example;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class Ds {

@SerializedName("Table1")
@Expose
private List<Table1> table1 = new ArrayList<Table1>();

/**
* 
* @return
* The table1
*/
public List<Table1> getTable1() {
return table1;
}

/**
* 
* @param table1
* The Table1
*/
public void setTable1(List<Table1> table1) {
this.table1 = table1;
}

}
-----------------------------------com.example.Response.java-----------------------------------

package com.example;

import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class Response {

@SerializedName("Status")
@Expose
private Boolean status;
@SerializedName("Message")
@Expose
private String message;
@SerializedName("ds")
@Expose
private Ds ds;

/**
* 
* @return
* The status
*/
public Boolean getStatus() {
return status;
}

/**
* 
* @param status
* The Status
*/
public void setStatus(Boolean status) {
this.status = status;
}

/**
* 
* @return
* The message
*/
public String getMessage() {
return message;
}

/**
* 
* @param message
* The Message
*/
public void setMessage(String message) {
this.message = message;
}

/**
* 
* @return
* The ds
*/
public Ds getDs() {
return ds;
}

/**
* 
* @param ds
* The ds
*/
public void setDs(Ds ds) {
this.ds = ds;
}

}
-----------------------------------com.example.Table1.java-----------------------------------

package com.example;

import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class Table1 {

@SerializedName("CustomerId")
@Expose
private String customerId;
@SerializedName("CustomerName")
@Expose
private String customerName;
@SerializedName("CustomerNo")
@Expose
private String customerNo;
@SerializedName("CustomerUrl")
@Expose
private String customerUrl;
@SerializedName("IsActive")
@Expose
private Boolean isActive;

/**
* 
* @return
* The customerId
*/
public String getCustomerId() {
return customerId;
}

/**
* 
* @param customerId
* The CustomerId
*/
public void setCustomerId(String customerId) {
this.customerId = customerId;
}

/**
* 
* @return
* The customerName
*/
public String getCustomerName() {
return customerName;
}

/**
* 
* @param customerName
* The CustomerName
*/
public void setCustomerName(String customerName) {
this.customerName = customerName;
}

/**
* 
* @return
* The customerNo
*/
public String getCustomerNo() {
return customerNo;
}

/**
* 
* @param customerNo
* The CustomerNo
*/
public void setCustomerNo(String customerNo) {
this.customerNo = customerNo;
}

/**
* 
* @return
* The customerUrl
*/
public String getCustomerUrl() {
return customerUrl;
}

/**
* 
* @param customerUrl
* The CustomerUrl
*/
public void setCustomerUrl(String customerUrl) {
this.customerUrl = customerUrl;
}

/**
* 
* @return
* The isActive
*/
public Boolean getIsActive() {
return isActive;
}

/**
* 
* @param isActive
* The IsActive
*/
public void setIsActive(Boolean isActive) {
this.isActive = isActive;
}

}

要在Realm中使用它,您希望extends RealmObject要存储在Realm中的类,并将@PrimaryKey注释添加到每个类中唯一的字段之一。例如,customerId可能是Table1类中的候选者。如果extends RealmObject包含List<Foo>的任何类,则必须将其与RealmList<Foo>交换,Foo也必须extends RealmObject。如果你使用RealmList,你必须向GSON添加一个TypeAdapter,以便它知道如何处理它 - here is one我写的是一个通用的T。