java - 预期为 BEGIN_ARRAY,但在第 16 行第 14 列路径 $[0].menus 处为 BEGIN_OBJECT
问题描述
我正在尝试解析 json 文件,但标题中不断出现异常。
这是json文件
[
{
"delivery_charge": 5,
"image": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/Bear%2Bcreek.jpg?alt=media&token=3d207b7a-1eda-49bc-931a-5abf78ee5093",
"hours": {
"Sunday": "11-7",
"Monday": "10-9",
"Tuesday": "10-10",
"Wednesday": "10-11",
"Thursday": "10-10",
"Friday": "10-11",
"Saturday": "10-2"
},
"menus":{
"Drinks": [
{
"Fresh_Fruit_Blends": ["Strawberry", "Strawberry Banana","Banana Smoothie","Mango","Papaya","Honeydew","Pineapple", "Avacado",
"Cantaloupe","Strawberry Lime","Fruit Tea","Mangonada"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/freshfruit.png?alt=media&token=13915c20-0d40-4542-a74e-20c791b085c2"
},
{
"Natural_Juices": ["Orange Juice", "Watermelon", "Carrot", "Carrot Orange","Fresh Limeade","Nuoc Mat(Artichoke Tea"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/nmat100%25naturaljuice.png?alt=media&token=f264240d-1764-480e-8155-b4948b28c36f"
},
{
"Sea_Foam": ["Matcha", "Earl Grey", "Jasmine", "Oolong","Thai Tea","Thai Green", "Black Coffee"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/seafoam.png?alt=media&token=d0175366-3310-4569-bbde-5aa30abcf533"
},
{
"Cream_Tea": ["Matcha", "Cream Tea","Jasmine", "Thai Tea","Thai Green Tea", "Oolong Cream","Brown Sugar Milk","Taro Cream","Almond Cream", "Caramel Cream", "Chocolate Cream", "Coconut Cream",
"Honeydew", "Hazelnut", "Oreo Cream Tea", "Peppermint Cream Tea", "Vanilla Cream"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/bsmCreamtea.png?alt=media&token=da1ab8df-4e49-4c02-9080-e1dbb7d5c310"
},
{
"Flavored_Tea": ["Jasmine Green Tea", "Passion Fruit", "Strawberry", "Mango","Peppermint", "Lime","Honey","Dried Plum",
"Green Apple","Peach","Lychee","Winter Melon","Pomegranate"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/sbgtea.png?alt=media&token=b74b21cc-8f77-47f1-aeb9-f3ecf744de54"
},
{
"Smoothie": ["Oreo Cookies & Cream","Taro","Coconut","Pina Colada","Blueberry w/ Ice-Cream","Almond","Red Bean",
"Chocolate","Frozen Matcha Green Tea","Orange Dreamsicle","Vanilla"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/tarosmoothie.png?alt=media&token=7fb66ea0-560a-4196-a152-dd09b1229a8c"
},
{
"Slurpy": ["Kiwi","Blueberry","Cherry","Grape","Green Apple", "Lychee","Passion Fruit","Peach"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/mangoslurpy.png?alt=media&token=07191718-3737-47e1-b2dd-26775fb61fc1"
},
{"Coffee": ["Ice-Cream","Frozen Vanilla Cappuccino","Frozen Mocha","Coffee Cream Tea","Cafe Sua Da","Caramel","Hazelnut","Vanilla","Peppermint","Hot Cocoa"],
"price": 10.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/FVFCOFFEE.png?alt=media&token=3c6f2b6b-3536-490a-838b-1fe027398d54"
}
],
"Foods" : [
{
"name": "Popcorn Chicken",
"price": 5.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/PopcornCkn.png?alt=media&token=a4112144-2e52-4237-b4a7-781bf0c676dc"
},
{
"name": "Sweet Potato Fries",
"price": 5.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/SweetPotato.png?alt=media&token=38e45dfc-e886-4f85-aa3e-d36bc051f6e1"
},
{
"name": "Egg Rolls",
"price": 5.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/Eggrolls.png?alt=media&token=221167d6-13b1-48e0-8527-12ee686ba452"
},
{
"name": "Calamari",
"price": 5.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/Calamari.png?alt=media&token=004a3bbb-48e9-4392-88ae-2760310ebb00"
},
{
"name": "Fried Squid Balls",
"price": 5.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/Squid.png?alt=media&token=634a516f-2d7e-4983-8afb-4c0073ae04e1"
},
{
"name": "Crinkle Cut Fries",
"price": 5.00,
"url": "https://firebasestorage.googleapis.com/v0/b/kims-tea-house.appspot.com/o/CrinkleFries.png?alt=media&token=b2a20607-1cfd-405d-96e9-ec92a0512576"
}
]
}
},
这是使用 json 并抛出错误消息的代码
public class MainActivity extends AppCompatActivity implements RestaurantListAdapter.RestaurantListClickListener {
Button logout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
logout = findViewById(R.id.Logout);
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SignInActivity.class);
startActivity(intent);
finish();
}
});
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Restaurant List");
List<RestaurantModel> restaurantModelList = getRestaurantData();
initRecyclerView(restaurantModelList);
}
private void initRecyclerView(List<RestaurantModel> restaurantModelList ) {
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RestaurantListAdapter adapter = new RestaurantListAdapter(restaurantModelList, this);
recyclerView.setAdapter(adapter);
}
public List<RestaurantModel> getRestaurantData() {
InputStream is = getResources().openRawResource(R.raw.kth_db);
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try{
Reader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
int n;
while(( n = reader.read(buffer)) != -1) {
writer.write(buffer, 0,n);
}
}catch (Exception e) {
}
String jsonStr = writer.toString();
Gson gson = new Gson();
RestaurantModel[] restaurantModels = gson.fromJson(jsonStr, RestaurantModel[].class);
List<RestaurantModel> restList = Arrays.asList(restaurantModels);
return restList;
}
@Override
public void onItemClick(RestaurantModel restaurantModel) {
Intent intent = new Intent(MainActivity.this, RestaurantMenuActivity.class);
intent.putExtra("RestaurantModel", restaurantModel);
startActivity(intent);
}
每当我编辑 gson 代码时,它都会从“预期的 begin_object 但是 begin_array”到预期的 begin_array 但是 begin_object”来回切换
餐厅模特班
import android.os.Parcel;
import android.os.Parcelable;
import java.util.List;
public class RestaurantModel implements Parcelable {
private String name;
private String address;
private String image;
private float delivery_charge;
private Hours hours;
private List<Menu> menus;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public float getDelivery_charge() {
return delivery_charge;
}
public void setDelivery_charge(float delivery_charge) {
this.delivery_charge = delivery_charge;
}
public Hours getHours() {
return hours;
}
public void setHours(Hours hours) {
this.hours = hours;
}
public List<Menu> getMenus() {
return menus;
}
public void setMenus(List<Menu> menus) {
this.menus = menus;
}
protected RestaurantModel(Parcel in) {
name = in.readString();
address = in.readString();
image = in.readString();
delivery_charge = in.readFloat();
menus = in.createTypedArrayList(Menu.CREATOR);
}
public static final Creator<RestaurantModel> CREATOR = new Creator<RestaurantModel>() {
@Override
public RestaurantModel createFromParcel(Parcel in) {
return new RestaurantModel(in);
}
@Override
public RestaurantModel[] newArray(int size) {
return new RestaurantModel[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(address);
dest.writeString(image);
dest.writeFloat(delivery_charge);
dest.writeTypedList(menus);
}
}
解决方案
推荐阅读
- gitlab - 日志超出 Gitlab 上 4194304 字节的限制
- php - 如何检查php中的两个变量是否相同?
- c# - 正确实施 IComparable
在 C# 8 中设置为启用 Nullable 的 Struct - javascript - 如何在锚标记/链接上打开模式弹出窗口在 c# 中单击以在弹出窗口中打开另一个 .aspx 页面
- python - 通过 ansible 使用 conda 命令的错误
- javascript - 激活时更改粘性文本的颜色
- amazon-web-services - 如何在不使用 AWS 容器的情况下创建服务网格?
- c# - System.IO.IOException:无效的参数,当试图在 web api 中保存 FormFile
- json - 新行不适用于 jspdf,结果被覆盖
- reactjs - React 推荐的静态站点