如何保存变量?
但是这个json代码:
{
"restarutant": [
{
"name": "Hotel Raja",
"photo": "http:\/\/i.imgur.com\/Mzt4u.jpg",
"address": "93, 2ndc ross, GDP etx.",
"area": "Vylaikaval",
"city": "Bangalore",
"rating": "4",
"cuisines": {
"first": "Chinese",
"second": "Korean"
}
},
{
"name": "Hotel Raja2",
"photo": "http:\/\/i.imgur2.com\/Mzt4u.jpg",
"address": "93, 2ndc ross, GDP etx. number2",
"area": "Vylaikaval2",
"city": "Bangalore2",
"rating": "4",
"cuisines": {
"first": "Chinese2",
"second": "Korean2"
}
}
]
}
代码:
JSONObject json = new JSONObject(thepreviousjson);
JSONArray jArray = json.getJSONArray("restaurant");
String name[] = new String[jArray.length()];
String photo[] = new String[jArray.length()];
String address[] = new String[jArray.length()];
String area[] = new String[jArray.length()];
String city[] = new String[jArray.length()];
String rating[] = new String[jArray.length()];
String cuisines[] = new String[jArray.length()];
String first[] = new String[jArray.length()];
String second[] = new String[jArray.length()];
for(int i=0; i<jArray.length(); i++){
JSONObject json_data = jArray.getJSONObject(i);
name[i] = json_data.getString("name");
photo[i] = json_data.getString("photo");
address[i] = json_data.getString("address");
area[i] = json_data.getString("area");
city[i] = json_data.getString("city");
rating[i] = json_data.getString("rating");
}
重点是存储:
name[0] = "Hotel Raja"...
name[1] = "Hotel Raja2"
first[0] = Chinese, second[0] = Korean, first[1] = Chinese2, second[1] = Korean2
我尝试了几种组合,但没有任何反应,我需要在代码中修改什么?谢谢
答案 0 :(得分:6)
您可以使用List
代替字符串Array
。
更好地使用模型概念。
<强>步骤:1)强>
为Restarutant.java创建模型
public class Restarutant {
private String name;
private String photoUrl;
private String address;
private String area;
private String city;
private int rating;
private Cuisines cuisines;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhotoUrl() {
return photoUrl;
}
public void setPhotoUrl(String photoUrl) {
this.photoUrl = photoUrl;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public int getRating() {
return rating;
}
public void setRating(int rating) {
this.rating = rating;
}
public Cuisines getCuisines() {
return cuisines;
}
public void setCuisines(Cuisines cuisines) {
this.cuisines = cuisines;
}
}
步骤:2)为美食创建模型
public class Cuisines {
private String first;
private String second;
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getSecond() {
return second;
}
public void setSecond(String second) {
this.second = second;
}
}
最后一步:现在如何在解析后将数据存储在模型中
List<Restarutant> list = new ArrayList<Restarutant>();
try {
JSONObject json = new JSONObject(thepreviousjson);
JSONArray jArray = json.getJSONArray("restaurant");
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
Restarutant data = new Restarutant();// Create Object Here
data.setName(json_data.getString("name"));
data.setPhotoUrl(json_data.getString("photo"));
data.setAddress(json_data.getString("address"));
data.setArea(json_data.getString("area"));
data.setCity(json_data.getString("city"));
JSONObject cuisines = json_data.getJSONObject("cuisines");
Cuisines cuisine = new Cuisines();// Create Object here
cuisine.setFirst(cuisines.getString("first"));
cuisine.setSecond(cuisines.getString("second"));
data.setCuisines(cuisine);// setting the cuisine
list.add(data);// Finally adding the model to List
}
} catch (JSONException e) {
e.printStackTrace();
}
现在如何从列表中检索值
for(int i=0;i<list.size();i++){
Restarutant restarutant=list.get(i);
String name=restarutant.getName();
String first=restarutant.getCuisines().getFirst();
String second=restarutant.getCuisines().getSecond();
System.out.println("Name: "+name+"First "+first+"Second "+second);
}
的输出:强> 的
Name:Hotel Raja First:Chiense Second: Korean
Name:Hotel Raja2 First:Chiense2 Second: Korean2
希望这会对你有所帮助。
答案 1 :(得分:1)
你必须使用ArrayList
例如
List<String> name = new ArrayList<String>();
for(int i=0; i<jArray.length(); i++){
JSONObject json_data = jArray.getJSONObject(i);
//by add new value to List the key will be the same key inside JSONarray
name.add(json_data.getString("name"));
}
//and to call back value from List name
//get first element 0
String first_name = name.get(0);
答案 2 :(得分:1)
为您的json响应创建一个parcelable,请参阅下面的代码: -
public class ObjectModel implements Parcelable{
public String name;
public String photo;
public String address;
public String area;
public String city;
public String rating;
public HashMap<String,Object> cuisines;
public ObjectModel(Parcel in)
{
name = in.readString();
photo = in.readString();
address = in.readString();
area = in.readString();
city = in.readString();
rating = in.readString();
in.readMap(cuisines, Object.class.getClassLoader());
}
@SuppressWarnings("rawtypes")
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
@Override
public ObjectModel createFromParcel(Parcel source)
{
return new ObjectModel(source);
}
@Override
public ObjectModel[] newArray(int size)
{
return new ObjectModel[size];
}
};
@Override
public int describeContents()
{
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(name);
dest.writeString(photo);
dest.writeString(address);
dest.writeString(area);
dest.writeString(city);
dest.writeString(rating);
dest.writeMap(cuisines);
}
public ObjectModel()
{
}
}
//Write the parser
private void parseJson(JSONObject baseJson) throws Exception
{
JSONArray jsonObjArray = baseJson.getJSONArray("restaurant");
ObjectModel[] objectModelArray = new ObjectModel[jsonObjArray.length()];
for(int index = 0;index<jsonObjArray.length();index++)
{
ObjectModel obj = new ObjectModel();
HashMap<String,Object> data = new HashMap<String, Object>();
JSONObject json = jsonObjArray.getJSONObject(index);
obj.name = json.getString("name");
obj.photo = json.getString("photo");
obj.address = json.getString("address");
obj.area = json.getString("area");
obj.city = json.getString("city");
obj.rating = json.getString("rating");// if it is a string
JSONObject cuis = json.getJSONObject("cuisines");
data.put("first", cuis.getString("first"));
data.put("second", cuis.getString("second"));
obj.cuisines = data;
objectModelArray[index] = obj;
}
}