有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

{
    "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) 个答案

  1. # 1 楼答案

     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);
    
                            }
    
  2. # 2 楼答案

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

    [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代码。我不知道你为什么要做这样的事。如果这不是您想要的,请在下面进行评论

  3. # 3 楼答案

    使用gson库。检查以下如何在项目中实施

    建造。格拉德尔

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

    然后创建MessageModel。java和MessageBaseModel。爪哇

    消息模型。爪哇

    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。爪哇

    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. # 4 楼答案

    试试这个

        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();
        }
    
  5. # 5 楼答案

    消息对象类:

    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;
        }
    
    
    }
    

    A消息类:

    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);
    

    参考Gson:

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

    输出:

    enter image description here