Чтение данных из массива json для построения графика - PullRequest
0 голосов
/ 11 июля 2019

Поэтому я использую зависимость диаграммы MPandroid для построения графика в приложении для Android.Для этого я добавляю данные в ArrayList класса Entry графа.Я сейчас добавляю данные вручную, но хочу проанализировать данные из файла json и добавить их в график.Может ли кто-нибудь сказать мне, как я могу прочитать отдельные элементы данных массива Json, чтобы добавить к графику.

Это код, который я использую для чтения файла json. У меня есть файл в папке с активами.

  try {
        InputStream is=getAssets().open("gaitdata.json");
        int size=is.available();
        byte[] buffer=new byte[size];
        is.read(buffer);
        is.close();
        json=new String(buffer,"UTF-8");
        JSONArray jsonArray=new JSONArray(json);

            for(int i=0;i<jsonArray.length();i++){
                JSONObject obj=jsonArray.getJSONObject(i);
                if(obj.getString("name").equals("kinematics")){
                    hipvalue.add(obj.getString("hip_min"));


              }
            }

Также это файл json, который я хочу прочитать.

{
 "name":"kinematics",
 "hip_min":[1.2,5.67,2.34,6.8]
}

Также я хочу, чтобы значение с плавающей точкой не работало, поэтому я использовал obj.getString (), чтобы получить значение "hip_min" для json.

И, наконец, вот как ядобавить данные вручную в список Array.

ArrayList<Entry> entries=new ArrayList<>();
        entries.add(new Entry(0,19.85f));

1 Ответ

0 голосов
/ 11 июля 2019

Для преобразования Json Arry в плавающий Array вы можете попробовать следующий код:

   String value = "{'name':'kinematics','hip_min':[1.2,5.67,2.34,6.8]}";
        JSONObject obj = new JSONObject(value);
        List hip_min = new ArrayList<Float>();
        JSONArray jsonArray;

        jsonArray = obj.getJSONArray("hip_min");

        for (Object item : jsonArray
        ) {
            hip_min.add(item);
        }
        System.out.println("Size : " + hip_min.size());

А для диаграммы

 int i=0;
        for (Object item:hip_min
             ) {
            entries.add(new Entry(i,item))
                    i=i+2;


        }

значение i для горизонтального сдвига.Я надеюсь, что это поможет.

...