过滤json

时间:2016-07-20 18:48:10

标签: java jsp hashmap

我有两个下降,一个是街道,另一个是适合。 Street和apt是地址类的属性。我为每个地址都有一个unique_seq_no,所以我将它存储在HashMap中。

 LinkedHashMap<String, Address> addressMap = new LinkedHashMap<String, Address >();
Property prop = new Property();
    ArrayList<Property> ap = new ArrayList<Property>();
    for(Offices of: offList)
    {
    Address ad = new Address();
    ad.setStreet(of.getAdd());
    ad.setApt(of.getUnit());
    ad.setUnique_seq_no(of.getSequence());
    addressMap.put(of.getSequence(),ad);
    prop.setAddSeq(of.getSequence());
    prop.setAdd(of.getAdd());
    ap.add(prop)
    }

返回JSON,

   [{seq:23456,add:1234 NW st,apt:201},{seq:45678,add:1234 NW st,apt:202},
     {seq:57689,add:6785 NW st,apt:203}]

问题, 1.在街道下拉列表中显示重复添加。

  1. 一旦用户从下拉列表中选择添加(例如:1234 NW-重复添加),它就会选择存储的seq并仅显示apt。
  2. 我想创建一个以街道为键的地图,以及一个apts列表作为值。由于街道是重复的,我们如何实现这一点。

1 个答案:

答案 0 :(得分:0)

在这里,您将了解如何获得所需的解决方案。我相信你是正确的,直到“addressMap”填充了key作为sequenceNo&amp;价值作为“地址”对象,其中包含街道,公寓和序列号。

接下来你需要做的是遍历adressMap&amp;填充另一个地图,它将关键字保存为街道(应该是唯一的)&amp;价值为“公寓一览”。这就是你如何做到这一点。

ArrayList ap = new ArrayList();

    for (Offices of : offlist) {
        Address ad = new Address();
        ad.setStreet(of.getAddress());
        ad.setApt(of.getUnit());
        ad.setUnique_seq_no(of.getSequence());
        addressMap.put(of.getSequence(), ad);
    }

    HashMap<String,ArrayList<String>> finalMap = new HashMap<String,ArrayList<String>>();

    for (Entry<String, Address> entry : addressMap.entrySet()) {

        Address address= entry.getValue();
        finalMap.put(address.getStreet(),getList(address.getStreet() , finalMap , address.getApt()));
    }

“getList”是指如果已存在则将Apartment列表添加到同一街道密钥的方法。

现在你需要在代码下面填充finalMap,其中包含唯一的street作为键和&amp;作为价值的公寓列表。

private static ArrayList<String> getList(String street,HashMap<String,ArrayList<String>> adressMap , String apt){

    if(adressMap != null && adressMap.get(street) != null){
        ArrayList<String> list =  adressMap.get(street);
        list.add(apt);
        return list;
    }else{
        ArrayList<String> list =  new ArrayList<String>();
        list.add(apt);
        return list;
    }
}

如果将finalMap转换为JSON字符串,下面将是您将看到的字符串格式。

{“678 NW”:[“101”],“124 NW”:[“101”],“1234 NW”:[“102”,“103”]}