gpt4 book ai didi

java - 如何使用 Android Volley 发布 JSON 数组并获取 JSON 对象作为响应?

转载 作者:行者123 更新时间:2023-11-29 02:25:41 25 4
gpt4 key购买 nike

我需要发布到的 API 需要一个 JSONArray,但响应是一个 JSONObject。不幸的是,据我所知,Android Volley 库没有这方面的方法。

有没有一种方法可以编写自定义请求,如何实现我上面解释的内容?

如果用 Volley 做不到,你建议我怎么做?

我相信该方法看起来像这样:

//数组:

JSONArray itemArray = new JSONArray();

try {

for (MenuItem menuItem : listOfItems) {
JSONObject item = new JSONObject();
Log.d(LOG_TAG, "Item ID--> " + menuItem.getId());
Log.d(LOG_TAG, "Item Quantity--> " + menuItem.getNumOrdered());
Log.d(LOG_TAG, "Item Price Lvl--> " +
menuItem.getPrice_levels().get(0).getId().toString());
Log.d(LOG_TAG, "Item Comments--> " +
menuItem.getSpecialInstructions());

item.put("menu_item", menuItem.getId());
item.put("quantity", menuItem.getNumOrdered());
item.put("price_level",
menuItem.getPrice_levels().get(0).getId().toString());
item.put("comment", menuItem.getSpecialInstructions());

JSONArray discounts = new JSONArray();
JSONObject discount = new JSONObject();
discount.put("discount", null);

item.put("discounts", discounts);

JSONArray modifiers = new JSONArray();
JSONObject modifier = new JSONObject();
modifier.put("modifier",
menuItem.getModifierGroups().get(0).getId());

item.put("modifiers", modifiers);


itemArray.put(item);
}

// Volley 请求

JsonArrayRequest jsArrayRequest = new JsonArrayRequest(Request.Method.POST, 
url, itemArray, new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {

try {

finalized();

} catch (Exception e) {
Log.v("volley ex", e.toString());
}

}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Log.v("volley error", error.toString());

}
}) {


@Override
public Map<String, String> getHeaders() throws AuthFailureError {


Map<String, String> headers = new HashMap<>();
headers.put("Api-Key", "api key");
headers.put("Content-Type", "application/json");

return headers;
}

};
requestQueue.add(jsArrayRequest);

}

//菜单项类

package com.garcon.garcon;

import java.io.Serializable;
import java.util.ArrayList;

public class MenuItem implements Serializable {

public String id;
public String name;
public Integer price;
protected ArrayList<PriceLevel> price_levels;
protected Boolean in_stock;
protected int modifier_groups_count;
protected ArrayList<ModifierGroup> mGroups;

//not defined in API but will give Category's ID to MenuItem
protected String categoryID;

//user defined variable
public int numOrdered = 0;
private String specialInstructions = "";

//http://stackoverflow.com/questions/18814076/how-to-make-intellij-show-
//eclipse-like-api-documentation-on-mouse-hover
/**
* Complete constructor for MenuItem.
*
* @param id The menu item’s id as stored in the POS. Sometimes a compound
value derived from other data
* @param name The name of the Menu Item as stored in the POS
* @param price The price, in cents
* @param price_levels Array of Hashes (id String Price Level Identifier,
price Integer The price of the menu item at this price level, in cents)
* @param in_stock Whether or not the item is currently available for order.
* @param mGroups Modifier Groups associated with the Menu Item.
* @param modifier_groups_count The number of Modifier Groups associated
with the Menu Item.
* @param categoryID parent category's id NOT name
*/

public MenuItem(String id, String name, Integer price, ArrayList<PriceLevel>
price_levels,
Boolean in_stock, ArrayList<ModifierGroup> mGroups, Integer
modifier_groups_count, String categoryID){
this.id = id;
this.name = name;
this.price = price;
this.price_levels = price_levels;
this.in_stock = in_stock;
this.mGroups = mGroups;
this.modifier_groups_count = modifier_groups_count;

this.categoryID = categoryID;

}

public ArrayList<PriceLevel> getPrice_levels() {
return price_levels;
}

public void setPrice_levels(ArrayList<PriceLevel> price_levels) {
this.price_levels = price_levels;
}

public String getId() {
return id;
}
public String getName(){
return name;
}
String getCategoryID() {
return categoryID;
}
public Integer getPrice(){
return this.price;
}
ArrayList<ModifierGroup> getModifierGroups(){ return this.mGroups;}

int getNumOrdered(){return this.numOrdered;}
void setNumOrdered(int amount){
numOrdered = amount;
}
String getSpecialInstructions(){return this.specialInstructions;}
void setSpecialInstructions(String instructions){
specialInstructions = instructions;
}

static class ModifierGroup implements Serializable{
private String id, name;
private Integer minimum, maximum;
private boolean required;
private ArrayList<ItemModifier> modifier_list;

public ModifierGroup(String id, String name, int minimum, int maximum,
boolean required, ArrayList<ItemModifier> modifier_list){
this.id = id;
this.name = name;
this.minimum = minimum;
this.maximum = maximum;
this.required = required;
this.modifier_list = modifier_list;
}

public ModifierGroup(){}

String getId(){return id;}
String getName(){return name;}
Integer getMinimum(){return minimum;}
Integer getMaximum(){return maximum;}
boolean isRequired(){return required;}
ArrayList<ItemModifier> getModifierList(){ return
this.modifier_list;}

static class ItemModifier implements Serializable{
private String id, name;
private Integer price_per_unit;
private ArrayList<PriceLevel> priceLevelsList;
//user defined variable
private boolean added = false;

public ItemModifier(String id, String name, Integer
price_per_unit, ArrayList<PriceLevel> priceLevelsList){
this.id = id;
this.name = name;
this.price_per_unit = price_per_unit;
this.priceLevelsList = priceLevelsList;
}

String getId(){return id;}
String getName(){return name;}
Integer getPricePerUnit(){return price_per_unit;}
ArrayList<PriceLevel> getPriceLevelsList(){return
priceLevelsList;}
boolean isAdded(){ return added;}
void setAdded(boolean b){added = b;}

}

static class ItemModifierGrouped extends ItemModifier implements
Serializable{
private int group_id;
public ItemModifierGrouped(String id, String name, Integer
price_per_unit, ArrayList<PriceLevel> priceLevelsList, int
group_id){
super(id,name,price_per_unit,priceLevelsList);
this.group_id = group_id;
}
}

}

public static class PriceLevel implements Serializable{
public String id;
public Integer price;
public PriceLevel(){}
public PriceLevel(String id, Integer price){
this.id = id;
this.price = price;
}
public String getId(){return id;}
public Integer getPrice(){return price;}
}

}

最佳答案

试试这个

 final String httpUrl = url;

Log.i(TAG,httpUrl.toString());
try{
JSONArray parametersForPhp = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put(key,"0");
jsonObject.put("key","");
jsonObject.put(key,sharedPreferences.getString(PATIENT_ID,BLANK));
jsonObject.put(APP_LANGUAGE,sharedPreferences.getString(APP_LANGUAGE,BLANK));

parametersForPhp.put(jsonObject);

JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.POST, httpUrl, parametersForPhp,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.i(TAG,response.toString());
if (response==null){
Toast.makeText(getApplicationContext(),"Please Try Again!",Toast.LENGTH_SHORT).show();
}else {
try {
//you code
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
RequestQueueSingleton.getInstance(getApplicationContext()).addToRequestQueue(arrayRequest);
}catch (Exception e){
e.printStackTrace();

}

关于java - 如何使用 Android Volley 发布 JSON 数组并获取 JSON 对象作为响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com