【问题标题】:How to add json to arraylist? [duplicate]如何将json添加到arraylist? [复制]
【发布时间】:2018-10-05 19:21:56
【问题描述】:

大家好,我是这个领域的新手。 我提出了一个项目的休息请求,我得到了这个回复:

{"success":true,"timestamp":1524649444,"base":"EUR","date":"2018-04-25","rates":{"AED":4.486623,"AFN":85.583411,"ALL":128.283655,"AMD":585.986726,"ANG":2.175126,"AOA":270.568194,"ARS":24.745299,"AUD":1.609775,"AWG":2.1 // and so on.

如何将货币及其价值插入arraylist

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fixer_request);
    System.out.println("-->rest");

    String url = "http://data.fixer.io/api/latest?access_key=7e4976fbeb5d633e337487fea31fd7ca";
    RequestQueue requestQueue= Volley.newRequestQueue(this);

    JsonObjectRequest objectRequest= new JsonObjectRequest(
            Request.Method.GET,
            url,
            null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.e("rest Response",response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("rest Response",error.toString());
                }
            }
    );

    requestQueue.add(objectRequest);
}

【问题讨论】:

  • 请在发布您的查询之前进行一些研究。这是一个非常基本的事情。请参考这里-aideafactory.com/…。如果您在此之后有任何问题,可以询问。

标签: java android json


【解决方案1】:

您必须像这样更改您的 JSON 响应:

{"success":true,"timestamp":1524649444,"base":"EUR","date":"2018-04-25","rates":[{"currency_name":"AED","currency_value":"4.486623"},{"currency_name":"AFN","currency_value":"85.583411"},{"currency_name":"ALL","currency_value":"128.283655"},{"currency_name":"AMD","currency_value":"585.986726"}]}

在您的 JSON 中,没有可以在数组列表中添加值的数组。

如果您无法更改 JSON 响应,则必须在数组列表中预先声明所有类型的货币,然后相应地添加货币。

【讨论】:

    【解决方案2】:

    使用 Gson 库轻松将 json 对象转换为 Java 对象 google-gson

    【讨论】:

      【解决方案3】:

      创建一个 JSONObject:

      JSONObject jObject = new JSONObject(result);
      

      获取特定字符串

      String aJsonString = jObject.getString("STRINGNAME");
      

      获取特定的布尔值

      boolean aJsonBoolean = jObject.getBoolean("BOOLEANNAME");
      

      获取特定整数

      int aJsonInteger = jObject.getInt("INTEGERNAME");
      

      获取特定的长

      long aJsonLong = jObject.getBoolean("LONGNAME");
      

      获取特定的双精度

      double aJsonDouble = jObject.getDouble("DOUBLENAME");
      

      获取特定的 JSONArray:

      JSONArray jArray = jObject.getJSONArray("ARRAYNAME");
      

      从数组中获取项目

      for (int i=0; i < jArray.length(); i++)
      {
          try {
              JSONObject oneObject = jArray.getJSONObject(i);
              // Pulling items from the array
              String oneObjectsItem = oneObject.getString("STRINGNAMEinTHEarray");
              String oneObjectsItem2 = oneObject.getString("anotherSTRINGNAMEINtheARRAY");
          } catch (JSONException e) {
              // Oops
          }
      }
      

      【讨论】:

        【解决方案4】:

        你可以从http://www.jsonschema2pojo.org/把json转成java类的注解库都是清晰的代码

        你可以使用从库改造 Gson 基地很容易

        或使用:

        JSONArray jArray2 = jArray.getJSONArray("PreFactorHotels");

                    for (int i = 0; i < jArray2.length(); i++) {
                        hotelPreFactorModels.add(new HotelPreFactorModel(jArray2.getJSONObject(i).getString("HotelNameE"),
                                Utility.dateShow(jArray2.getJSONObject(i).getString("HotelChekin"))
                                , Utility.dateShow(jArray2.getJSONObject(i).getString("HotelChekout")),
                                jArray2.getJSONObject(i).getString("AdlCount"),
                                jArray2.getJSONObject(i).getString("ChdCount"),jArray2.getJSONObject(i).getString("RoomTitleFa")));
        
                    }
        

        【讨论】:

          【解决方案5】:

          使用 GSON 库 它需要三个步骤

          String afikJson  = "YOUR JSON...";
           Gson gson = new Gson();//create Gson object
          //and create Type object with arrayList as a type of data
          Type afikListType = new TypeToken<ArrayList<Afik>>(){}.getType();
          
          //map your JSON
          List<Afik> afikList = gson.fromJson(afikJson, afikListType); 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-13
            • 2021-12-07
            • 2013-05-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-30
            相关资源
            最近更新 更多