2017-07-23 170 views
-1

我的JSON字符串。解析JSON字符串到对象

{ 
    "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字符串中的第一个对象为MyRateCard创建一个对象(比如rate_id:32)。

MyRateCard ratecard = new Gson().fromJson(response.toString(), MyRateCard.class); 

但不工作。有人可以帮我解析这个吗?

+2

附加'MyRateCard'类的代码。 – fluffyBatman

+0

[this](https://stackoverflow.com/a/20523955/2815219)有帮助吗? –

+0

你有没有使用任何类的MyRateCard类的列表? –

回答

1
{ 
    "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 
     } 
    ] 
} 

这是您的JSON访问任何JSON水平。这是JSON是一个包含RateCardType数组的对象。

您已创建RateCardType类。

现在创建一个由MyRateCard类List组成的类。

class ListRateCard { 
    List<MyRateCard> RateCardType; 

    // write getter and setter 
} 

现在,写了下面的代码:

ListRateCard ratecards = new Gson().fromJson(response.toString(), ListRateCard.class); 

通过下面的代码获取rateId

ratecards.getRateCardType().get(0).getRate_id(); 
+0

我创建了一个内部类“类ListRateCard {列表 RateCardType; //获取和设置为每个项目 }这一行提高类型casting--列表 ratecards =新GSON()fromJson(响应的异常。 toString(),ListRateCard。类); – blb007

+0

不要创建一个内部类。创建一个名为ListRateCard的普通Java类 –

+0

不变更同样例外 – blb007

0

您可以通过树层次结构

MyRateCard ratecard = new Gson().fromJson(response.toString(), MyRateCard.class); 
 
String rateid=ratecard.rate_id;

+0

Log.i(“blb”,“”+ ratecard.getRate_id());打印0 – blb007

1

这些是2个files.The MyPojo类是持有人的实际数据。在您的json中,外部{}表示一个对象,该对象只包含一个名为的键。RateCardType。因此外部类别称为MyPojo

现在关键RateCardType包含由括号[]表示,对​​象列表因此List<RateCardType>。剩下的只是包含在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 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(); 
.... 
} 
+0

你能详细解释一下吗?这是单个文件还是两个文件? – blb007

+1

@ blb007我编辑了答案,让你知道最新情况 –

+0

现在可以使用这条线了。 MyRateCard ratecard = new Gson()。fromJson(response.toString(),MyRateCard.class); – blb007