如何在Android Studio上使用Json?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android Studio上使用Json?相关的知识,希望对你有一定的参考价值。

下面是我的json文件结构。我想绘制图形(x轴:时间,y轴:“关闭”值)

{“符号”:“ AAPL”,“ stock_exchange_short”:“纳斯达克”,“ timezone_name”:“ America / New_York”,“当天”:{2018-10-19 15:59:00:{“开放”:“ 219.49”,“关闭”:“ 219.23”,“ high”:“ 219.61”,“ low”:“ 219.19”,“ volume”:“ 302415”,},2018-10-19 15:58:00:{“打开”:“ 219.62”,“关闭”:“ 219.48”,“ high”:“ 219.70”,“ low”:“ 219.48”,“ volume”:“ 173762”,},2018-10-19 15:57:00:{“打开”:“ 219.54”,“关闭”:“ 219.64”,“ high”:“ 219.66”,“ low”:“ 219.46”,“ volume”:“ 130992”,},2018-10-19 15:56:00:{“打开”:“ 219.71”,“关闭”:“ 219.57”,“ high”:“ 219.77”,“ low”:“ 219.57”,“ volume”:“ 113398”,},...}}
@Override
public void onResponse(JSONObject response) {
      JsonArray arr = response.getJsonArray("intraday")??

我想获得的是每次都包含“数据”作为键和“封闭值”作为值的哈希图。谁能告诉我如何获得它

答案

您不能对所有关闭值使用相同的键('data')

[Hash map键是unique。如果添加重复的key,则为overwritten

我在下面的答案中给了examplehashmapunique key(时间)。

您可以如下解析您的JSON

@Override
public void onResponse(JSONObject response) {
     JSONObject intradayObj = response.getJSONObject("intraday");

     HashMap<String, String> yourMap = new HashMap();   

     Iterator<?> keys = intradayObj.keys();
     while(keys.hasNext()) {
         String key = (String)keys.next();
         if (intradayObj.get(key) instanceof JSONObject ) {

             JSONObject dateTimeJsonObj = intradayObj.optJSONObject(key);
             if (dateTimeJsonObj == null) {
                continue;
             }
             // get close value 
             String closeValue = dateTimeJsonObj.getString("close")
             Log.d("TAG", "Your Close value "+closeValue);

             // here you can store close value
             yourMap.put(getTime(key), closeValue)
         }
     }

      // finally your hashmap will look like
      // ("15:59:00", "219.23")
      // ("15:58:00", "219.48")
      // ("15:57:00", "219.64")
      // ("15:56:00", "219.57")

}

String日期时间获取时间

public String getTime(String dateTime){
   try {
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = df.parse(dateTime);
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    String shortTimeStr = sdf.format(date);
   } catch (ParseException e) {
      e.printStackTrace(); 
   }
   return shortTimeStr;

}

希望它对您有帮助。 快乐编码

以上是关于如何在Android Studio上使用Json?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用android studio中的改造服务在请求中传递json

如何在android studio中通过带有密码的POST方法获取JSON数据

Android Studio 中的 JSON 语言注入?

如何在android studio中从这种类型的json数组中获取价值?

Android Studio 中的 Json 解析问题

如何从 Android Studio 的资源目录中读取 json 文件?