【问题标题】:Converting given string to List<Class> in Java在 Java 中将给定的字符串转换为 List<Class>
【发布时间】:2017-03-29 19:20:34
【问题描述】:

我有一个带有值的字符串折扣:

"[{\"startInterval\":0,\"endInterval\":3,\"discount\":1000.0},
 {\"startInterval\":3,\"endInterval\":6,\"discount\":750.0},
 {\"startInterval\":6,\"endInterval\":9,\"discount\":500.0},
 {\"startInterval\":9,\"endInterval\":12,\"discount\":10.0}]"

我的折扣类有模型:

public class Discount  {

    private int startInterval;
    private int endInterval;
    private double discount;

    public Discount() {

    }

    public int getStartInterval() {
        return startInterval;
    }

    public void setStartInterval(int startInterval) {
        this.startInterval = startInterval;
    }

    public int getEndInterval() {
        return endInterval;
    }

    public void setEndInterval(int endInterval) {
        this.endInterval = endInterval;
    }

    public Double getDiscount() {
        return discount;
    }

    public void setDiscount(Double discount) {
        this.discount = discount;
    }

}

我想将字符串序列化为List&lt;Discount&gt;。我怎么做?我尝试将字符串转换为JSONArray(gson 和 json),但出现了一些错误。

注意:

[{"startInterval":0,"endInterval":3,"discount":1000.0},
 {"startInterval":3,"endInterval":6,"discount":750.0},
 {"startInterval":6,"endInterval":9,"discount":500.0},
 {"startInterval":9,"endInterval":12,"discount":10.0}]

存储在 mysql 数据库中。我将其提取到字符串折扣中,然后尝试对其进行序列化。

【问题讨论】:

  • 用 GSON 序列化一个对象非常简单,你试过these methods 吗?还有this一个?
  • 看看jackson 2 JSON to Java Object...
  • @Oneiros 这些链接序列化单个 json 元素。我需要的是序列化为 List List rateList = mapper.readValue(disounts,TypeFactory.defaultInstance().constructCollectionType(List.class, Discount.class));这也无济于事
  • @Plirkee 试过这个列表 dicountList = mapper.readValue(disounts,TypeFactory.defaultInstance().cons‌​tructCollectionType(‌​List.class, Discount.class));这将调用 Discount 类的构造函数,参数为折扣字符串。该字符串包含整个数组。如果它是单个元素,它可能已经被序列化了
  • 看我提供的第二个链接,使用了对象列表。 GSON 自动处理 Java 集合。我在这里错过了什么吗?

标签: java json


【解决方案1】:

使用 GSON:

String json = /* your json */
Type type = new TypeToken<List<Discount>>().getType();
List<Discount> discounts = new Gson().fromJson(json , type);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多