#java #android #json
#Ява #Android #json
Вопрос:
как получить данные из массива Json в другом массиве Json ,мне нужно получить массив «элементы дополнения» и поместить его в другое представление корзины
пожалуйста, посмотрите на json и java-код, который я уже написал .
вывод json:
[{ "name": "BOILED EGGS", "price": 40000, "quantity": 1, "option": null, "addon items": [ { "addon_item_name": "Cheese", "addon_id": "112", "price": "2500", "quantity": "1" } ], "order notes": "extra meal" }{ "name": "Amazon Green Salad", "price": 54000, "quantity": 1, "option": "Full Portion", "addon items": [ { "addon_item_name": "Cheese", "addon_id": "112", "price": "2500", "quantity": "1" }, { "addon_item_name": "Smoked Salmon", "addon_id": "136", "price": "4000", "quantity": "1" } ], "order notes": "" }{ "address": { "address": "hadath", "flat": "mona bldg", "city": "beirut", "postcode": "1003" }, "phone": "71883419" }]
пожалуйста, прежде чем сказать мне, есть ли у меня какие-либо проблемы с этим json
php-скрипт :
lt;?php header('Content-Type: application/json; charset=utf-8'); function getAdd($ids) { $servername = 'mysql'; $username = ''; $password = ''; $database = ''; $conn = new mysqli($servername, $username, $password, $database); $sql = "SELECT meta_value FROM `wp_postmeta` WHERE post_id = ? AND meta_key = '_rpress_delivery_address' "; $stmt = $conn-gt;prepare($sql); $stmt-gt;bind_param('i',$ids); $stmt-gt;execute(); $stmt-gt;bind_result($meta_value); while($stmt-gt;fetch()){ $arr = unserialize($meta_value); return $arr; } } function getVar($ids,$price) { $servername = 'mysql'; $username = ''; $password = ''; $database = ''; $conn = new mysqli($servername, $username, $password, $database); $sql = "SELECT meta_value FROM `wp_postmeta` WHERE post_id = ? AND meta_key = 'rpress_variable_prices' "; $stmt = $conn-gt;prepare($sql); $stmt-gt;bind_param('i',$ids); $stmt-gt;execute(); $stmt-gt;bind_result($meta_value); while($stmt-gt;fetch()){ $arr = unserialize($meta_value); for ($i=0; $ilt;=count($arr);$i ) { $p1 = $arr[$i][amount] 0; if ($p1 == $price) { return $arr[$i][name]; } } } } if (isset($_GET['id'])) { $id= $_GET['id']; $servername = 'mysql'; $username = ''; $password = ''; $database = ''; $conn = new mysqli($servername, $username, $password, $database); $orders = array(); $sql = "SELECT meta_value FROM `wp_postmeta` WHERE post_id = ?"; $stmt = $conn-gt;prepare($sql); $stmt-gt;bind_param('i',$id); $stmt-gt;execute(); $stmt-gt;bind_result($meta_value); while($stmt-gt;fetch()){ $arr = unserialize($meta_value); //var_dump($arr); for($i=0;$ilt;=count($arr);$i ) { $items = array(); $items[$i] = $arr[cart_details][$i]; if ($items[$i] !== null) { $variable_id = $arr[cart_details][$i][id]; $vp = $arr[cart_details][$i][price]; $phone = $arr[phone]; $notes = $arr[cart_details][$i][instruction]; ; //echo $arr[1]; $temp = [ 'name' =gt; $arr[cart_details][$i][name], 'price' =gt; $arr[cart_details][$i][price], 'quantity' =gt; $arr[cart_details][$i][quantity], 'option' =gt; getVar($variable_id,$vp), 'addon items'=gt; $arr[cart_details][$i][addon_items], 'order notes' =gt; $notes, 'address' =gt; getAdd($id), 'phone' =gt; $phone ]; $json = json_encode($temp); echo $json; } } $fixed_temp = [ 'address' =gt; getAdd($id), 'phone' =gt; $phone ]; //print_r($arr[cart_details][$i][addon_items]); } // echo json_encode($fixed_temp); } ?gt;
пожалуйста, если вы видите какие-либо проблемы в php-скрипте, сообщите мне
Ява :
public void getAllPosts() throws Exception{ String TAG = "POSTS_VIDEO"; String url = "https://fitness-diner.com/api/api-get-post-data-bkp.php?id=" id; StringRequest jsonObjectRequest = new StringRequest(Request.Method.GET, url, new Response.Listenerlt;Stringgt;() { @Override public void onResponse(String response) { Log.i("response_VIDEO", response); progressBar.setVisibility(View.GONE); parseJson(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { try { // swipeRefreshLayout.setRefreshing(false); Log.e("error", "" error.getMessage()); }catch (NullPointerException e) { // swipeRefreshLayout.setRefreshing(false); e.printStackTrace(); } } }); AppController.getInstance().addToRequestQueue(jsonObjectRequest, TAG); } public void parseJson(String response){ try { JSONArray array = new JSONArray(response); JSONObject jsonObject =null; post_array.clear(); ItemOrder p; AddOnitem r; for(int i=0 ; ilt;array.length() ; i ) { jsonObject=array.getJSONObject(i); String nameitem = jsonObject.getString("name"); String priceitem = jsonObject.getString("price"); String quantityitem = jsonObject.getString("quantity"); String optionitem = jsonObject.getString("option"); // String addonid = jsonObject.getString("addon items"); String noteitem = jsonObject.getString("order notes"); p = new ItemOrder(); p.setNameitem(nameitem); p.setPriceitem(priceitem); p.setQuantityitem(quantityitem); p.setOptionitem(optionitem); p.setNoteitem(noteitem); // p.setViews_video(views_video); post_array.add(p); //realmHelper.save(p); } } catch (JSONException e) { // swipeRefreshLayout.setRefreshing(false); e.printStackTrace(); Log.d("error", e.getMessage()); } adapter = new ItemOrderAdapter(getApplicationContext(), post_array,id); recyclerView.setAdapter(adapter); // swipeRefreshLayout.setRefreshing(false); }
мне нужно решить это быстро
Спасибо!!
Комментарии:
1. Ваш массив JSON не является допустимым массивом (между объектами нет запятых)
2. пожалуйста, скажите мне, что я могу изменить в php-скрипте
3. Для начала,
temp
всегда есть только один элемент, и вы не должны повторять несколько объектов в цикле. Вы должны создать пустой массив перед циклом. Добавьте к нему объекты в цикле, а затем повторитеjson_encode
результат массива один раз после цикла