将JSON数组存储在不同的列表或数组中

时间:2018-07-09 05:46:48

标签: java android json listview

{
    "status": true,
    "message": [
        {
            "ID": 1,
            "TFrom": "b",
            "TTo": "c"
        },
        {
            "ID": 2,
            "TFrom": "b",
            "TTo": "c"
        },
        {
            "ID": 3,
            "TFrom": "b",
            "TTo": "c"

       }
    ]
}

这是我的JSON结果,我使用的是Android / Java,我想要的是将"message"数组中的每个对象分隔成一个数组,因为它们中的每个对象都应位于一个列表项中。 这意味着我的ListView将要查看列表中的"message"内容。 像这样:

list1= [{"ID": 1, "TFrom": "b", "TTo": "c"}] 
list2= [{"ID": 2, "TFrom": "b", "TTo": "c"}] 

5 个答案:

答案 0 :(得分:1)

消息对象类:

public class MessagesObject {
    boolean status;
    List<AMessage> message;

    public List<AMessage> getMessage() {
        return message;
    }

    public void setMessage(List<AMessage> message) {
        this.message = message;
    }

    public boolean isStatus() {

        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }


}

AMessage类:

public class AMessage {
    int ID;
    String TFrom;
    String TTo;

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getTFrom() {
        return TFrom;
    }

    public void setTFrom(String TFrom) {
        this.TFrom = TFrom;
    }

    public String getTTo() {
        return TTo;
    }

    public void setTTo(String TTo) {
        this.TTo = TTo;
    }
}

用法:

String json="you json string";
MessagesObject messagesObject = new Gson().fromJson(jsonToParse, MessagesObject.class);

Ref Gson:

implementation 'com.google.code.gson:gson:2.8.2'

输出:

enter image description here

答案 1 :(得分:0)

我不确定您真正想要的是什么,但是如果您真的想将一个数组转换为数组列表,即。

[1, 2, 3] => [[1], [2], [3]]

您可以使用此代码作为起点。

    List<List<T>> YOUR_LIST_OF_LISTS = message.stream().map((e) -> {
        ArrayList<T> temp = new ArrayList<>();
        temp.add(e);
        return temp;
    }).collect(Collectors.toList());

用所需的某些数据类型替换T,在这种情况下,可能是JSONObject。

不是特定于android的,只是java代码。我不确定您为什么要做这样的事情。如果这不是您想要的,请在下面评论。

答案 2 :(得分:0)

 JSONObject heroObject = data.getJSONObject("favorite");
JSONArray jarray=heroObject.getJSONArray("message");
ArrayList<HashMap<String,String>> array=new ArrayList<>();
                        //now looping through all the elements of the json array 
                        for (int i = 0; i < jarray.length(); i++) {
                            //getting the json object of the particular index inside the array
                          JSONObject heroObject = jarray.getJSONObject(i);
HashMap<String,String> inner=new HashMap<String, String>();
inner.put("id", heroObject.getString("ID"));
inner.put("from", heroObject.getString("TFrom"));
inner.put("to", heroObject.getString("TTo"));
                              array.add(inner);

                        }

答案 3 :(得分:0)

使用gson库。请在下面查看如何在项目中实施。

build.gradle

implementation 'com.google.code.gson:gson:2.7'

然后创建MessageModel.java和MessageBaseModel.java。

MessageModel.java

public class MessageModel {
@SerializedName("ID")
int id;

@SerializedName("TFrom")
String tFrom;

@SerializedName("TTo")
String tTo;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String gettFrom() {
    return tFrom;
}

public void settFrom(String tFrom) {
    this.tFrom = tFrom;
}

public String gettTo() {
    return tTo;
}

public void settTo(String tTo) {
    this.tTo = tTo;
}
}

MessageBaseModel.java

public class MessageBaseModel {
@SerializedName("status")
boolean status;

@SerializedName("message")
ArrayList<MessageModel> messageModels = new ArrayList<>();

public boolean isStatus() {
    return status;
}

public void setStatus(boolean status) {
    this.status = status;
}

public ArrayList<MessageModel> getMessageModels() {
    return messageModels;
}

public void setMessageModels(ArrayList<MessageModel> messageModels) {
    this.messageModels = messageModels;
}
}

在主要活动中使用以下代码:(注意:结果是您的JSON结果)

MessageBaseModel messageBaseModel=new Gson().fromJson(result.toString() , MessageBaseModel.class);
ArrayList<MessageModel> messageModels =  MessageBaseModel.getMessageModels();

检查以下示例以获取输出:

messageModels.get(0) is your first message object

messageModels.get(0).getId()=1

messageModels.get(0).gettFrom()=b

messageModels.get(1).getId()=2

messageModels.get(2).getId()=3

对不起,我的英语。

答案 4 :(得分:0)

尝试一下

    List<Map<String,String>> list = new ArrayList<>();
    try
    {
        JSONArray messageArray = response.getJSONArray("message");
        for (int i = 0;i<messageArray.length(); i++)
        {
            Map<String,String> map = new HashMap<>();
            JSONObject jsonObject = messageArray.getJSONObject(i);
            Iterator<String> keys = jsonObject.keys();
            while (keys.hasNext())
            {
                String key = keys.next();
                String value = jsonObject.getString(key);
                map.put(key,value);
            }
            list.add(map);
        }
    }
    catch (JSONException e) 
    {
        e.printStackTrace();
    }