我是新手,我在java中创建了webservice,从MySQL数据库获取所有餐厅类别并在android studio中访问 ,
我的json回复如下,
[
{
"restro": {
"categoryid": 1,
"categoryname": "Restaurant (Vegetarian)"
}
},
{
"restro": {
"categoryid": 2,
"categoryname": "Restaurant (Non-Vegetarian)"
}
}
]
反序列化代码gson库
Gson gson=new Gson();
Type RestroTypeListType=new TypeToken<Collection<Category>>(){}.getType();
List<Category> categories=(List<Category>)gson.fromJson(jsonstring,RestroTypeListType);
tv1.setText("");
for(Category category : categories)
{
tv1.append(category.getCategoryName()+"\n");
}
我的实体类是
public class Category {
private int categoryID;
private String categoryName;
public Category() {
}
public int getCategoryID() {
return categoryID;
}
public void setCategoryID(int categoryID) {
this.categoryID = categoryID;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
@Override
public String toString() {
return "Category{" +
", categoryName='" + categoryName + '\'' +
'}';
}
}
我在textview中得到null。
答案 0 :(得分:0)
您的问题是您期望收集一些类别,但您正在返回一组restro。
您能否在json响应中提供有关restro属性的更多详细信息。
但我想,引入一个名为(restro)类型为Category的新类将解决您的问题。
并改变
Type RestroTypeListType=new TypeToken<Collection<Category>>(){}.getType();
有关
Type RestroTypeListType=new TypeToken<Collection<Restro>>(){}.getType();
答案 1 :(得分:0)
不添加任何外部库,
JSONArray jsonArray = new JSONArray(jsonstring);
String OuterstringArray;
tv1.setText("");
for (int outer = 0; outer < jsonArray.length(); outer++) {
OuterstringArray=jsonArray.getJSONObject(outer).getString("restro");
JSONObject jsonObject=new JSONObject(OuterstringArray);
arrayListRestro.add(jsonObject.getString("categoryname"));
}
ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arrayListRestro);
listRestros.setAdapter(arrayAdapter);