【问题标题】:How to use Jackson to deserialise Array Like This?如何使用杰克逊反序列化这样的数组?
【发布时间】:2015-05-15 05:38:24
【问题描述】:

如何简单的反序列化?我的 JSON 看起来像:

{
"ok": 1,
"data": {
    "A": [
        {
            "brand": "Aman",
            "logo": "http://zxmall.bluedoor.com.cn/uploads/logo/61.png"
        }
    ],
    "B": [
        {
            "brand": "Base-DS",
            "logo": "http://zxmall.bluedoor.com.cn/uploads/logo/24.png"
        },
        {
            "brand": "BB",
            "logo": "http://zxmall.bluedoor.com.cn/uploads/logo/46.png"
        },
        {
            "brand": "Banane",
            "logo": "http://zxmall.bluedoor.com.cn/uploads/logo/11.png"
        }

    ],
    "C": [
        {
            "brand": "cat",
            "logo": "http://zxmall.bluedoor.com.cn/uploads/logo/78.png"
        },
        {
            "brand": "car",
            "logo": "http://zxmall.bluedoor.com.cn/uploads/logo/129.png"
        }
    ]
}
}

来自 [A-Z]。

我的代码如下:

ReslutMod data = JsonUtil.jsonToMod(json, ReslutMod.class);

在 JsonUtil 中:

public static  <T> T jsonToMod(String jsonString, Class<T> clazz) {
    if (StringUtils.isEmpty(jsonString)) {
         return null;
    }
    try {
        return JsonMapper
                .getInstance()
                .getJsonMapper().readValue(jsonString, clazz);
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

JavaBean:

 public class ReslutMod {
    public int ok;
    public BrandListMod data;
 }

JavaBean2:

 public class BrandListMod {
    public ArrayList<CardBrandModel> A;
    public ArrayList<CardBrandModel> B;
    public ArrayList<CardBrandModel> C;
    public ArrayList<CardBrandModel> D;
    public ArrayList<CardBrandModel> E;
    public ArrayList<CardBrandModel> F;
    public ArrayList<CardBrandModel> G;
    public ArrayList<CardBrandModel> H;
    public ArrayList<CardBrandModel> I;
    public ArrayList<CardBrandModel> J;
    public ArrayList<CardBrandModel> K;
    public ArrayList<CardBrandModel> L;
    public ArrayList<CardBrandModel> M;
    public ArrayList<CardBrandModel> N;
    public ArrayList<CardBrandModel> O;
    public ArrayList<CardBrandModel> P;
    public ArrayList<CardBrandModel> Q;
    public ArrayList<CardBrandModel> R;
    public ArrayList<CardBrandModel> S;
    public ArrayList<CardBrandModel> T;
    public ArrayList<CardBrandModel> U;
    public ArrayList<CardBrandModel> V;
    public ArrayList<CardBrandModel> W;
    public ArrayList<CardBrandModel> X;
    public ArrayList<CardBrandModel> Y;
    public ArrayList<CardBrandModel> Z;
}

我认为这不是一个好方法。我能做什么?

【问题讨论】:

  • 你能把你的问题说得更清楚一点吗?你已经有一票赞成关闭,如果达到 5 则你的帖子将被关闭。
  • 如果我没记错的话,在这里你想通过减小 bean 大小来使你的实现更干净。
  • 如果你想优化内存,你应该使用Jackson的Stream Parser API,只创建一个arraylist,其中包含从A到Z的所有数据。
  • 是的,我只想创建一个数组列表,其中包含从 A 到 Z 的所有数据。

标签: java android json jackson


【解决方案1】:

您可以在此处使用地图。

E. G。 :

class ReslutMod {
    public int ok;
    public Map<String, ArrayList<CardBrandModel>> data;

    public int getOk() {
        return ok;
    }

    public void setOk(int ok) {
        this.ok = ok;
    }

    public Map<String, ArrayList<CardBrandModel>> getData() {
        return data;
    }

    public void setData(Map<String, ArrayList<CardBrandModel>> data) {
        this.data = data;
    }

}

CardBrandModel 类将是这样的:

class CardBrandModel {

    String brand;

    String logo;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getLogo() {
        return logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2018-03-16
    • 2014-09-29
    相关资源
    最近更新 更多