【问题标题】:how to convert json array to float array如何将json数组转换为float数组
【发布时间】:2017-05-18 06:21:59
【问题描述】:

我想从 json 数组中获取数据,我想为我的条形图制作常规浮点数组.. 但是如何将 json 数组更改为浮点数组

public class fragment extends Fragment {
public fragment() {
    // Required empty public constructor
}


final static String TAG = "ok";

BarChart barChart;

float datay [];
float datay1 [];
String datax [];
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View fragment = inflater.inflate(R.layout.fragment1, container, false);

    barChart = (BarChart)fragment.findViewById(R.id.barchart);

    fetchData();


    return  fragment;
}

public void fetchData(){
    showLoading("Loading");
    StringRequest strReq = new StringRequest(Request.Method.POST,
            AppConfig.CHART, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            hideLoading();
            try {
                Log.d(TAG,"ini response"+response);
                JSONObject object = new JSONObject(response);
                //datacatagory for datax
                JSONArray datacatagory = object.getJSONArray("category");
                Log.d(TAG,"catagory"+datacatagory);
                JSONArray jdata1 = object.getJSONArray("data");
                Log.d(TAG,"jdata"+jdata1);
                JSONObject obj1 = jdata1.getJSONObject(1);
                Log.d(TAG,"obj"+obj1);
                // arr1 for datay
                JSONArray arr1 = obj1.getJSONArray("data");
                Log.d(TAG,"arr"+arr1);
                //arr2 for datay1
                JSONArray arr2 = obj1.getJSONArray("data");
                Log.d(TAG,"arr"+arr1);

                //how convert data jsonarray to regular array in java??

                chartListener(datay,datax,datay1);


            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            getToast(error.getMessage());
            hideLoading();
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            return getPOST("laba_rugi");
        }

    };

    addRequestQueen(strReq,TAG);

}


public void chartListener(float datay[],String datax[],float data1[]){
    barChart.setDescription("ok");
    ArrayList<BarEntry> ydata = new ArrayList<>();
    for (int i = 0;i< datay.length;i++){
        ydata.add(new BarEntry(datay[i],i));
    }

    ArrayList<BarEntry> ydata1 = new ArrayList<>();
    for (int i = 0;i< datay.length;i++){
        ydata1.add(new BarEntry(data1[i],i));
    }

    ArrayList<String> xdata = new ArrayList<>();
    for (int i = 0;i < datax.length;i++){
        xdata.add(datax[i]);
    }

    BarDataSet barDataSet = new BarDataSet(ydata,"rugi");
    barDataSet.setColors(ColorTemplate.PASTEL_COLORS);

    BarDataSet barDataSet1 = new BarDataSet(ydata1,"laba");
    barDataSet.setColors(ColorTemplate.JOYFUL_COLORS);

    ArrayList<BarDataSet> dataSets = new ArrayList<>();  // combined all dataset into an arraylist
    dataSets.add(barDataSet);
    dataSets.add(barDataSet1);

    BarData barData = new BarData(xdata,dataSets);
    barData.setValueTextSize(13f);
    barData.setValueTextColor(Color.BLACK);

    int a =00000;
    barChart.setData(barData);
    barChart.setBackgroundColor(a);
    barChart.invalidate();
}
}

我想从 json 数组中获取数据,我想为我的条形图制作常规浮点数组。但是,如何将 json 数组更改为浮点数组 请帮帮我。

【问题讨论】:

    标签: android arrays json


    【解决方案1】:

    这个简单的方法应该可以帮到你。未经测试,但应该可以工作。

    private float[] fillData(JSONArray jsonArray){
    
        float[] fData = new float[jsonArray.length()];
    
        for (int i = 0; i < jsonArray.length(); i++) {
            try {
                fData[i] = Float.parseFloat(jsonArray.getString(i));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
        return fData;
    }
    

    就这样写这个方法,得到float数组:

    JSONArray arr1 = obj1.getJSONArray("data");
    float[] data = fillData(arr1);
    

    【讨论】:

    • 对不起,我还是不明白,请给我直接的例子来浮动 datay [];
    • 您希望将哪些数据更改为浮动数据? @Said
    • JSONArray arr1 这是我要改成 float datay[];
    • 请也分享这个日志 "Log.d(TAG,"arr"+arr1);" @Said
    • 好的..这是我的日志.. [32.534,46.436,0,6.565,0,7,7.777,77.457,4,0,63.463,3.453,0,0,3.453,253,0 ,0,4.535,0,34.543,0,55,646,0,56.565,0,0,0,0,0]
    猜你喜欢
    • 2014-06-28
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2015-12-12
    • 1970-01-01
    • 2019-12-04
    相关资源
    最近更新 更多