Преобразуйте массив объектов json в разбираемый пакет

#java #arrays #object #bundle #parcelable

Вопрос:

Я изо всех сил пытаюсь понять, как создать набор объектов массива, а затем записать их в основной набор параметров с помощью Bundle.putParcelableArray.

НАПРИМЕР, Массив:

[{«item_id»:25,»item_name»:»Album»,»price»:»15.00″,»item_brand»:»»,»item_category»:»Music»,»item_list_name»:»Общий продукт List»,»index»:1},{«item_id»:17,»item_name»:»Beanie»,»price»:»18.00″,»item_brand»:»»,»item_category»:»Accessories»,»item_list_name»:»Общий список товаров»,»индекс»:2},{«идентификатор товара»:34,»имя товара»:»Шапочка с логотипом»,»цена»:»18.00″,»бренд товара»:»»,»Категория товара»:»Аксессуары»,»Имя списка товаров»:»Общий список товаров»,»индекс»:3},{«идентификатор товара»:18,»имя товара»:»Пояс»,»цена»:»55.00″,»item_brand»:»»,»item_category»:»аксессуары»,»item_list_name»:»Общие сведения о продукте List»,»index»:4},{«item_id»:19,»item_name»:»Cap»,»price»:»16.00″,»item_brand»:»»,»item_category»:»Accessories»,»item_list_name»:»Общие сведения о продукте List»,»index»:5},{«item_id»:14,»item_name»:»Hoodie»,»price»:»42.00″,»item_brand»:»»,»item_category»:»Hoodies»,»item_list_name»:»общий список продуктов»,»индекс»:6},{«item_id»:15,»item_name»:»толстовку с логотипом»,»цена»:»45.00″,»item_brand»:»»,»item_category»:»толстовки»,»item_list_name»:»общий список продуктов»,»индекс»:7}]

Мне нужно иметь возможность создавать новый пакет для каждой итерации и хранить эти пакеты в новом разборном экземпляре []. Затем поместите этот экземпляр в пакет params с помощью putParcelableArray

Вот что у нас пока получилось:

 package com.example.ecommerceapp;

import android.content.Context;
import android.os.Bundle;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
import android.webkit.JavascriptInterface;

import androidx.collection.SparseArrayCompat;

import com.google.firebase.analytics.FirebaseAnalytics;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.Iterator;

// [START analytics_web_interface]
public class AnalyticsWebInterface {

   public static final String TAG = "AnalyticsWebInterface";
   private FirebaseAnalytics mAnalytics;

   public AnalyticsWebInterface(Context context) {
       mAnalytics = FirebaseAnalytics.getInstance(context);
   }

   @JavascriptInterface
   public void logEvent(String name, String jsonParams) {
       LOGD("logEvent:"   name);
       Log.w(TAG, "jsonReceived: "   jsonParams);
       mAnalytics.logEvent(name, bundleFromJson(jsonParams));
   }

   @JavascriptInterface
   public void setUserProperty(String name, String value) {
       LOGD("setUserProperty:"   name);
       mAnalytics.setUserProperty(name, value);
   }

   private void LOGD(String message) {
       // Only log on debug builds, for privacy
       if (BuildConfig.DEBUG) {
           Log.d(TAG, message);
       }
   }

   private Bundle bundleFromJson(String json) {
       // [START_EXCLUDE]
       if (TextUtils.isEmpty(json)) {
           return new Bundle();
       }
       Log.w(TAG, "Bundlefromjson: "   json);
       Bundle result = new Bundle();

       try {
           JSONArray jsonArray = new JSONArray(json);

           for (int i = 0; i < jsonArray.length(); i  ) {
               Log.w(TAG, "jsonarray index: "   i);

               JSONObject jsonObject = jsonArray.getJSONObject(i);
               Log.w(TAG, "jsonObject: "   jsonObject);

               Iterator<String> keys = jsonObject.keys();

               while (keys.hasNext()) {
                   String key = keys.next();
                   Object value = jsonObject.get(key);

                   if (value instanceof String) {
                       result.putString(key, (String) value);
                   } else if (value instanceof Integer) {
                       result.putInt(key, (Integer) value);
                   } else if (value instanceof Double) {
                       result.putDouble(key, (Double) value);
                   } else {
                       Log.w(TAG, "Value for key "   key   " not one of [String, Integer, Double]");
                   }
               }
           }
           } catch (JSONException e) {
               Log.w(TAG, "Failed to parse JSON, returning empty Bundle.", e);
               return new Bundle();
           }

           return resu<
           // [END_EXCLUDE]
   }
}
 

Я недостаточно разбираюсь в java, чтобы закончить это.

Спасибо