Отправить данные Json Array с несколькими объектами

0
 JSONArray jsonArray = jo.getJSONArray("products_list");
                        productList = new ArrayList<>();
                        String ProductName = null;
                        String ProductQTY = null;
                        String ProductCost = null;
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                            ProductName = jsonObject2.getString("product_name");
                            ProductQTY = jsonObject2.getString("product_quantity");
                            ProductCost = jsonObject2.getString("product_cost");
                        }

                        Pname = ProductName;
                        Pqty = ProductQTY;
                        Pcost = ProductCost;



 SaveProduct(BillNo, Pname, Pqty, Pcost);

и соответствующий json is-

"gstin_no": "987654321",
"products_list": [

    {

        "product_name": "himalaya shampoo",
        "product_quantity": "20",
        "product_cost": "100*product_quantity"
    },


    {

        "product_name": "almonds",
        "product_quantity": "2",
        "product_cost": "400*product_quantity"
    },

    {

        "product_name": "Rin Soap",
        "product_quantity": "20",
        "product_cost": "10*product_quantity"
    },

    {

        "product_name": "himalaya shampoo",
        "product_quantity": "20",
        "product_cost": "100*product_quantity"
    }]

Я пытаюсь сделать приложение для Android, где я сканирую QR-код и получаю вывод в формате json. Я хочу отправить массив с несколькими объектами в базу данных Mysql, но когда я отправляю значение в базу данных, я принимаю значение последнего объекта в базе данных, как я могу вставить все объекты массива в базу данных?

Как я могу вставить все объекты в базу данных Mysql.

  • 0
    значение только последнего объекта Pname = ProductName , не думаете ли вы, что некоторые из них должны каким-то образом использоваться внутри цикла!
  • 0
    Я пытался сделать это тоже. Я положил его в цикл, но все еще не работает должным образом @Pavneet_Singh
Показать ещё 1 комментарий
Теги:

3 ответа

0

Поэтому вам нужно сделать вызов сохранения в вашем цикле (длина массива json).

    String BillNo = jo.optString("gstin_no");
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject2 = jsonArray.optJSONObject(i);
        String ProductName = jsonObject2.optString("product_name");
        String ProductQTY = jsonObject2.optString("product_quantity");
        String ProductCost = jsonObject2.optString("product_cost");

        SaveProduct(BillNo, ProductName, ProductQTY, ProductCost);
    }
0

Я предлагаю Gson Library для лучшего читаемого кода

Во-первых, добавьте это в свои зависимости

implementation 'com.google.code.gson:gson:2.8.2

Во-вторых, создайте класс модели продукта

public class Product {
  private String product_name;
  private String product_quantity;
  private String product_cost;
}

просто измените свой код на эти строки

Gson gson = new Gson();
Type listType = new TypeToken<List<Product>>() {}.getType();
List<Product> productsList = new Gson().fromJson(jsonArray, listType);

то вы можете сохранить productsList в базе данных лучшего кода с несколькими строками и лучшей производительностью

0

вы вызываете SaveProduct(BillNo, Pname, Pqty, Pcost); после цикла for.so вы получаете последние значения индекса. Убедитесь, что ваш метод должен находиться внутри цикла.

    for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                                ProductName = jsonObject2.getString("product_name");
                                ProductQTY = jsonObject2.getString("product_quantity");
                                ProductCost = jsonObject2.getString("product_cost");

SaveProduct(BillNo, ProductName, ProductQTY, ProductCost);
                            }
  • 0
    Я тоже так пробовал но ничего не получалось
  • 0
    Спасибо! это сработало для меня .... Большое спасибо
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню