Java 将JSON字符串解析为对象
我的JSON字符串Java 将JSON字符串解析为对象,java,android,json,gson,Java,Android,Json,Gson,我的JSON字符串 { "RateCardType": [{ "rate_id": 32, "applianceId": 59, "categoryId": 33, "install_Price": 599, "uninstall_Price": 0, "gasRefill_Price": 0, "repair_Price
{
"RateCardType": [{
"rate_id": 32,
"applianceId": 59,
"categoryId": 33,
"install_Price": 599,
"uninstall_Price": 0,
"gasRefill_Price": 0,
"repair_Price": 249,
"basicClean_Price": 0,
"deepClean_Price": 449,
"demo_Price": 500
},
{
"rate_id": 33,
"applianceId": 59,
"categoryId": 34,
"install_Price": 799,
"uninstall_Price": 0,
"gasRefill_Price": 0,
"repair_Price": 349,
"basicClean_Price": 0,
"deepClean_Price": 799,
"demo_Price": 500
}
]
}
MyRateCard.java
package com.example.demo;
import javax.persistence.Column;
public class MyRateCard {
@Column(name = "rate_id")
int rate_id;
public void setRate_id(int rate_id) {
this.rate_id=rate_id;
}
public int getRate_id() {
return rate_id;
}
@Column(name = "applianceId")
int applianceId;
public void setApplianceId(int applianceId {
this.applianceId=applianceId;
}
public int getApplianceId() {
return applianceId;
}
@Column(name = "categoryId")
int categoryId;
public void setCategoryId(int categoryId) {
this.categoryId=categoryId;
}
public int getCategoryId() {
return categoryId;
}
@Column(name = "install_Price")
int install_Price;
public void setInstall_Price(int install_Price {
this.install_Price=install_Price;
}
public int getInstall_Price() {
return install_Price;
}
@Column(name = "uninstall_Price")
int uninstall_Price;
public void setUninstall_Price(int uninstall_Price) {
this.uninstall_Price=uninstall_Price;
}
public int getUninstall_Price() {
return uninstall_Price;
}
@Column(name = "gasRefill_Price")
int gasRefill_Price;
public void setGasRefill_Price(int gasRefill_Price) {
this.gasRefill_Price=gasRefill_Price;
}
public int getGasRefill_Price() {
return gasRefill_Price;
}
@Column(name = "repair_Price")
int repair_Price;
public void setRepair_Price(int repair_Price) {
this.repair_Price=repair_Price;
}
public int getRepair_Price() {
return repair_Price;
}
@Column(name = "basicClean_Price")
int basicClean_Price;
public void setBasicClean_Price(int basicClean_Price) {
this.basicClean_Price=basicClean_Price;
}
public int getBasicClean_Price() {
return basicClean_Price;
}
@Column(name = "deepClean_Price")
int deepClean_Price;
public void setDeepClean_Price(int deepClean_price) {
this.deepClean_Price=deepClean_price;
}
public int getDeepClean_Price() {
return deepClean_Price;
}
@Column(name = "demo_Price")
int demo_Price;
public void setDemo_Price(int demo_Price) {
this.demo_Price=demo_Price;
}
public int getDemo_Price() {
return demo_Price;
}
}
我创建了一个模型类MyRateCard.java,其中包含所有getter和setter。我想用JSON字符串中的第一个对象(比如rate_id:32)为MyRateCard创建一个对象
但不起作用。有人能帮我分析一下吗?您可以通过树层次结构访问任何json级别 MyRateCard ratecard=new Gson().fromJson(response.toString(),MyRateCard.class); 字符串rateid=ratecard.rate\u id代码> 这是你的JSON。这是JSON,它是一个包含
RateCardType
数组的对象
您已创建RateCardType类
现在创建一个由MyRateCard类列表组成的类
class ListRateCard {
List<MyRateCard> RateCardType;
// write getter and setter
}
通过以下代码获取rateId
:
ListRateCard ratecards = new Gson().fromJson(response.toString(), ListRateCard.class);
ratecards.getRateCardType().get(0).getRate_id();
这是两个文件。MyPojo类是实际数据的持有者。在json中,外部{}表示一个对象,该对象只包含一个名为RateCardType的键。因此外部类名为MyPojo 现在键RateCardType包含一个对象列表,如[]括号所示,因此是
list
。其余的只是最初得到的RateCardType类中包含的数据
public class MyPojo
{
private List<RateCardType> RateCardType;
public List<RateCardType> getRateCardType ()
{
return RateCardType;
}
public void setRateCardType (List<RateCardType> RateCardType)
{
this.RateCardType = RateCardType;
}
}
public class RateCardType
{
private String repair_Price;
private String basicClean_Price;
private String uninstall_Price;
private String categoryId;
private String install_Price;
private String rate_id;
private String gasRefill_Price;
private String demo_Price;
private String deepClean_Price;
private String applianceId;
public String getRepair_Price ()
{
return repair_Price;
}
public void setRepair_Price (String repair_Price)
{
this.repair_Price = repair_Price;
}
public String getBasicClean_Price ()
{
return basicClean_Price;
}
public void setBasicClean_Price (String basicClean_Price)
{
this.basicClean_Price = basicClean_Price;
}
public String getUninstall_Price ()
{
return uninstall_Price;
}
public void setUninstall_Price (String uninstall_Price)
{
this.uninstall_Price = uninstall_Price;
}
public String getCategoryId ()
{
return categoryId;
}
public void setCategoryId (String categoryId)
{
this.categoryId = categoryId;
}
public String getInstall_Price ()
{
return install_Price;
}
public void setInstall_Price (String install_Price)
{
this.install_Price = install_Price;
}
public String getRate_id ()
{
return rate_id;
}
public void setRate_id (String rate_id)
{
this.rate_id = rate_id;
}
public String getGasRefill_Price ()
{
return gasRefill_Price;
}
public void setGasRefill_Price (String gasRefill_Price)
{
this.gasRefill_Price = gasRefill_Price;
}
public String getDemo_Price ()
{
return demo_Price;
}
public void setDemo_Price (String demo_Price)
{
this.demo_Price = demo_Price;
}
public String getDeepClean_Price ()
{
return deepClean_Price;
}
public void setDeepClean_Price (String deepClean_Price)
{
this.deepClean_Price = deepClean_Price;
}
public String getApplianceId ()
{
return applianceId;
}
public void setApplianceId (String applianceId)
{
this.applianceId = applianceId;
}
}
公共类MyPojo
{
私有列表类型;
公共列表getRateCardType()
{
退货率卡片类型;
}
公共作废setRateCardType(列表RateCardType)
{
this.RateCardType=RateCardType;
}
}
公共类RateCardType
{
私人字符串修复价格;
私有字符串基本清洁价格;
私人价格;
私有字符串类别ID;
私人字符串安装价格;
私有字符串速率\u id;
私人串加气价格;
私人字符串演示价格;
私人字符串价格;
私有字符串applianceId;
公共字符串getRepair\u Price()
{
返修价格;
}
公共无效设置修复价格(字符串修复价格)
{
this.repair\u Price=维修价格;
}
公共字符串getBasicClean\u Price()
{
返回基本清洁价格;
}
公共基础清洁价格(字符串基础清洁价格)
{
this.basicClean_Price=basicClean_Price;
}
公共字符串getUninstall\u Price()
{
退货价格;
}
public void setUninstall_Price(字符串uninstall_Price)
{
this.uninstall\u Price=uninstall\u Price;
}
公共字符串getCategoryId()
{
返回类别ID;
}
public void setCategoryId(字符串categoryId)
{
this.categoryId=categoryId;
}
公共字符串getInstall\u Price()
{
返回安装价格;
}
公共无效设置安装价格(字符串安装价格)
{
this.install\u Price=安装价格;
}
公共字符串getRate\u id()
{
返回率;
}
公共无效设置率\u id(字符串率\u id)
{
this.rate\u id=rate\u id;
}
公共字符串getGasRefill\u价格()
{
返回加气价格;
}
公共作废设置加气价格(字符串加气价格)
{
this.gasreell\u Price=加油价格;
}
公共字符串getDemo_Price()
{
退货价格;
}
公共无效设置演示价格(字符串演示价格)
{
this.demo\u Price=demo\u Price;
}
公共字符串getDeepClean_Price()
{
返回价格;
}
公共无效设置deepClean_价格(字符串deepClean_价格)
{
this.deepClean_Price=deepClean_Price;
}
公共字符串getApplianceId()
{
回礼;
}
public void setApplianceId(字符串applianceId)
{
this.applianceId=applianceId;
}
}
为了使用它
MyPojo holder= new Gson().fromJson(response.toString(), MyPojo.class);
List<RateCardType> list=holder.getRateCardType();
for(int i=0;i<list.size();i++)
{
list.get(i).getBasicClean_Price();
....
}
MyPojo holder=new Gson().fromJson(response.toString(),MyPojo.class);
List List=holder.getRateCardType();
对于(int i=0;i附加MyRateCard
类的代码。是否有帮助?您在MyRateCard类的列表中使用过任何类吗?我对这个概念不太熟悉,所以不知道该怎么办。@AvijitKarmakar我没有使用任何东西。Log.i(“blb”,“”+ratecard.getRate_id());打印0我创建了一个内部类“ListRateCard”{List RateCardType;//每个项的getter和setter}此行引发类型转换的异常--List ratecards=new Gson().fromJson(response.toString(),ListRateCard.class);不创建内部类。创建名为ListRateCard的普通java类在此处添加异常。1)转换为java.util.List 2)将可变费率卡类型更改为'com.package.ListRateCard 3)使ListRateCard实现java.util.List 4)将费率卡类型迁移到com.package.ListRateCard对不起,现在检查答案中的那一行。我在那里写错了。现在检查更新的答案。您能详细解释我吗?这是一个文件还是两个文件?@blb007我编辑答案是为了让您了解发生了什么我现在可以使用这一行了。MyRateCard ratecard=new Gson().fromJson(response.toString(),MyRateCard.class);
public class MyPojo
{
private List<RateCardType> RateCardType;
public List<RateCardType> getRateCardType ()
{
return RateCardType;
}
public void setRateCardType (List<RateCardType> RateCardType)
{
this.RateCardType = RateCardType;
}
}
public class RateCardType
{
private String repair_Price;
private String basicClean_Price;
private String uninstall_Price;
private String categoryId;
private String install_Price;
private String rate_id;
private String gasRefill_Price;
private String demo_Price;
private String deepClean_Price;
private String applianceId;
public String getRepair_Price ()
{
return repair_Price;
}
public void setRepair_Price (String repair_Price)
{
this.repair_Price = repair_Price;
}
public String getBasicClean_Price ()
{
return basicClean_Price;
}
public void setBasicClean_Price (String basicClean_Price)
{
this.basicClean_Price = basicClean_Price;
}
public String getUninstall_Price ()
{
return uninstall_Price;
}
public void setUninstall_Price (String uninstall_Price)
{
this.uninstall_Price = uninstall_Price;
}
public String getCategoryId ()
{
return categoryId;
}
public void setCategoryId (String categoryId)
{
this.categoryId = categoryId;
}
public String getInstall_Price ()
{
return install_Price;
}
public void setInstall_Price (String install_Price)
{
this.install_Price = install_Price;
}
public String getRate_id ()
{
return rate_id;
}
public void setRate_id (String rate_id)
{
this.rate_id = rate_id;
}
public String getGasRefill_Price ()
{
return gasRefill_Price;
}
public void setGasRefill_Price (String gasRefill_Price)
{
this.gasRefill_Price = gasRefill_Price;
}
public String getDemo_Price ()
{
return demo_Price;
}
public void setDemo_Price (String demo_Price)
{
this.demo_Price = demo_Price;
}
public String getDeepClean_Price ()
{
return deepClean_Price;
}
public void setDeepClean_Price (String deepClean_Price)
{
this.deepClean_Price = deepClean_Price;
}
public String getApplianceId ()
{
return applianceId;
}
public void setApplianceId (String applianceId)
{
this.applianceId = applianceId;
}
}
MyPojo holder= new Gson().fromJson(response.toString(), MyPojo.class);
List<RateCardType> list=holder.getRateCardType();
for(int i=0;i<list.size();i++)
{
list.get(i).getBasicClean_Price();
....
}