繁体   English   中英

将具有多个对象的JSON String转换为类实例

[英]Converting JSON String with multiple objects into class instances

如何将具有多个对象的Json String转换为java对象:

编辑:它似乎不太可能工作,但这将创建类Statement的 2个类实例:

String JsonStr = "{\"bills\":[{\"amount\":\"13\",\"billId\":\"billid3\"}] ,\"bills\":[{\"amount\":\"155\",\"billId\":\"billid4\"}]}";
ObjectMapper mapper = new ObjectMapper();
Statement obj = mapper.readValue(JsonStr, obj.class);

如果没有,我如何为接收带有多个相同类型的唯一对象(银行对帐单)的JSON字符串的程序编写代码,并为其创建适当数量的java对象实例? 我非常感谢任何帮助。

非常感谢!

我认为你提供的json字符串应该是这样的

“{\\”bill \\“:[{\\”amount \\“:\\”13 \\“,\\”billId \\“:\\”billid3 \\“},{\\”amount \\“:\\”155 \\“,\\” BILLID \\ “:\\” billid4 \\ “}]}”

如果是这种情况,您可以使用以下解决方案:

创建两个类Bill.javaTestObject.java ,如下所示:

Bill.java

public class Bill {
    private double amount;
    private String billId;
    /**
     * @return the amount
     */
    public double getAmount() {
        return amount;
    }
    /**
     * @param amount the amount to set
     */
    public void setAmount(double amount) {
        this.amount = amount;
    }
    /**
     * @return the billId
     */
    public String getBillId() {
        return billId;
    }
    /**
     * @param billId the billId to set
     */
    public void setBillId(String billId) {
        this.billId = billId;
    }

}

TestObject.java

import java.util.List;

public class TestObject {

    private List<Bill> bills;

    /**
     * @return the bills
     */
    public List<Bill> getBills() {
        return bills;
    }

    /**
     * @param bills the bills to set
     */
    public void setBills(List<Bill> bills) {
        this.bills = bills;
    }

}

这是测试代码的主程序。

Test.java

import com.fasterxml.jackson.databind.ObjectMapper;

public class Test {

    public static void main(String[] args) {
        String jsonStr = "{\"bills\":[{\"amount\":\"13\",\"billId\":\"billid3\"} ,{\"amount\":\"155\",\"billId\":\"billid4\"}]}";

        ObjectMapper mapper = new ObjectMapper();
        try {
            TestObject testObject = mapper.readValue(jsonStr, TestObject.class);
            System.out.print(testObject);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}

我用过gson-2.2.2.jar。

请查找以下代码:

Bill.java

public class Bill
{
    private double  billAmount;

    private String  billId;

    //getters and setters
}

Main.java

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Main
{
    public static void main(String[] args)
    {
        Bill bill = null;
        List<Bill> bills = new ArrayList<Bill>();
        for (int i = 0; i < 5; i++)
        {
            bill = new Bill();
            bill.setBillAmount(100 + (i + 1));
            bill.setBillId("bill_id_" + (i + 1));
            bills.add(bill);
        }
        Gson gson = new Gson();
        String json = gson.toJson(bills, new TypeToken<List<Bill>>()
        {}.getType());
        System.out.println(json);

        Type mapType = new TypeToken<List<Bill>>()
        {}.getType();
        List<Bill> billsRetrieved = new Gson().fromJson(json, mapType);
        for (Bill bill2 : billsRetrieved)
        {
            System.out.println(bill2.getBillId());
        }
    }
}

OutPut:

[
   {
      "billAmount":101.0,
      "billId":"bill_id_1"
   },
   {
      "billAmount":102.0,
      "billId":"bill_id_2"
   },
   {
      "billAmount":103.0,
      "billId":"bill_id_3"
   },
   {
      "billAmount":104.0,
      "billId":"bill_id_4"
   },
   {
      "billAmount":105.0,
      "billId":"bill_id_5"
   }
]

bill_id_1 bill_id_2 bill_id_3 bill_id_4 bill_id_5

如果您需要进一步说明,请恢复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM