Android 如何获取json对象和数组值?

Android 如何获取json对象和数组值?,android,arrays,json,Android,Arrays,Json,如何以这种格式解析JSON值?我想获得数据元素的详细信息,但在数据内部有“日期”,在日期内部有一个包含两个以上元素的数组。我想先从数据中获取所有日期,然后在这些日期内获取这些日期内的所有信息。我怎样才能做到这一点?请帮忙我尝试了以下代码,但没有成功 try { JSONObject jsonObject = new JSONObject("data"); JSONArray jsonArray =jsonObject.getJSONArray(String.valueof(cuu

如何以这种格式解析JSON值?我想获得数据元素的详细信息,但在数据内部有“日期”,在日期内部有一个包含两个以上元素的数组。我想先从数据中获取所有日期,然后在这些日期内获取这些日期内的所有信息。我怎样才能做到这一点?请帮忙我尝试了以下代码,但没有成功

try {
    JSONObject jsonObject = new JSONObject("data");
    JSONArray jsonArray =jsonObject.getJSONArray(String.valueof(cuurentdate));

    JSONArray session;
    for (int i = 0; i < jsonArray.length() - 1; i++) {
        jsonObject = jsonArray.getJSONObject(i);
        session= jsonObject.getJSONArray("session");

        Log.d("MyLog", session + "");
    }
} catch (JSONException e) {
    e.printStackTrace();
}
试试这个代码

在这段代码中,jsonMstObject是临时对象,您必须使用API响应JSONobject而不是jsonMstObject

试试看{
JSONObject jsonMstObject=newJSONObject(“{”status“:1,“status_code“:200,“data:{”2018-02-11:“{”session:“01:00am”,“place”:true},{”session:“02:00am”,“place”:true}),“2018-02-12:“{”session:“01:00am”,“place”:true},{”session session:“02:00am”,“place”:true}}”);
JSONObject JSONObject=jsonMstObject.getJSONObject(“数据”);
JSONArray JSONArray=jsonObject.getJSONArray(String.valueof(cuurentdate));
ArrayList arrSession=新建ArrayList();
for(int i=0;i
在这段代码中,arrSession是会话字符串数组

例如,您通过了cuurentdate=“2018-02-11”,然后您收到了如下结果

[01:00 AM,02:00 AM]


注意:此代码基于您的cuurentdate参数工作。这是从数据中获取静态日期数组并创建字符串数组的代码

您只需要将响应字符串传递给方法。您可以尝试以下方法:

  private void jsonParsing(String jsonString) {

   // String jsonString = "{ \"status\": 1, \"status_code\": 200, \"data\": { \"2018-02-11\": [ { \"session\": \"01:00 AM\", \"place\": true }, { \"session\": \"02:00 AM\", \"place\": true } ], \"2018-02-12\": [ { \"session\": \"01:00 AM\", \"place\": true }, { \"session\": \"02:00 AM\", \"place\": true } ] } }";
    try {
        JSONObject jsonObject = new JSONObject(jsonString);
        JSONObject dataObj = jsonObject.getJSONObject("data");

        Iterator<String> iter = dataObj.keys();

        Log.e(TAG, "jsonParsing: "+iter );

        while (iter.hasNext()) {
            String key = iter.next();
                JSONArray datesArray = dataObj.getJSONArray(key);

                ArrayList<String> sessions = new ArrayList<String>();

                for (int i = 0; i < datesArray.length(); i++) {
                    JSONObject datesObject = datesArray.getJSONObject(i);

                    sessions.add(datesObject.getString("session"));
                }
                Log.d("MyLog", sessions + "");

        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
}
private void jsonParsing(字符串jsonString){
//字符串jsonString=“{\'status\”:1,“status\”:200,“data\”:{\'2018-02-11\:[{\'session\:“01:00am\”,\'place\:true},{\'session\”:“02:00am\”,“place\”:true},\'2018-02-12\:[{\'session\:“01:00am\”,“place\”:true},{\'session;
试一试{
JSONObject JSONObject=新的JSONObject(jsonString);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
Log.e(标签“jsonParsing:”+iter);
while(iter.hasNext()){
String key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
ArrayList会话=新建ArrayList();
对于(int i=0;i
(1)获取主json的JSONObject

 JSONObject objMain = new JSONObject("your json string");
(2) 从主json获取“数据”的JSONObject

 JSONObject jsonData = objMain.getJSONObject("data")
(3) 从对象“数据”获取所有键(日期)

迭代器iter=jsonData.keys(); while(iter.hasNext()){ String key=iter.next(); 试一试{ JSONArray arrayDate=objData.getJSONArray(键) 对于(i=0;i
无效的JSON变量。已编辑,这是一个打字错误。您的JSON格式现在无效。您能帮我更正吗?我是这个解析的新手在这里检查你的json谢谢,让我检查一下这个json异常-java.lang.string类型的值数据不能转换为jsonobject@Arslanaliok使用JSONObject JSONObject=jsonMstObject.getJSONObject(“数据”);代替JSONObject的JSONObject=新的JSONObject(“数据”);在这个JSONMSObject中,是您的响应JSONObject谢谢,。让我检查一下,你能告诉我用json字符串写什么吗。是否为空?要解析的json。解析从数据对象开始,在“status”括号顶部没有字符串。很抱歉,如果我在点击api时做了一些错误的事情,那么作为回报,这个json响应是我共享的。花括号,然后是状态,状态代码,然后是数据。问题解决了,谢谢你的帮助。投票:)
 JSONObject objMain = new JSONObject("your json string");
 JSONObject jsonData = objMain.getJSONObject("data")
Iterator<String> iter = jsonData.keys();

while (iter.hasNext()) {

 String key = iter.next();

try {
     JSONArray arrayDate = objData.getJSONArray(key)
     for (i = 0; i < arrayDate.length(); i++) {

           JSONObject objDate = arrayDate.getJSONObject(i)
           Log.d("#session :", "" + objDate.getString("session"))
           Log.d("#place :", "" + objDate.getBoolean("place"))
          }
 } catch (JSONException e) {
    // Something went wrong!
  }
}