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.
Поэтому вам нужно сделать вызов сохранения в вашем цикле (длина массива 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);
}
Я предлагаю 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 в базе данных лучшего кода с несколькими строками и лучшей производительностью
вы вызываете 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);
}
Pname = ProductName
, не думаете ли вы, что некоторые из них должны каким-то образом использоваться внутри цикла!