高手帮忙查看两种解析有区别吗????????

jgszhuzhu 2012-08-14 03:39:49

都重复了
本来的 xml解析 // xml解析信息
public static Vector<CouponDetail> fromXmlToAdroundInfo(Element root) {
System.out.println(1);
Vector<CouponDetail> list = new Vector<CouponDetail>(50);
NodeList nlist = root.getElementsByTagName("result");
for (int i = 0; i < nlist.getLength(); i++) {
list.add(fromNode(nlist.item(i)));

// System.out.println("add"+fromNode(nlist.item(i)).getAddress()+"街店名字"+fromNode(nlist.item(i)).getShopname()+"街店坐标"+fromNode(nlist.item(i)).x+":"+fromNode(nlist.item(i)).y);
}
// System.out.println("list"+list.toString());
return list;
}

private static CouponDetail fromNode(Node n) {
CouponDetail ad = new CouponDetail();
try {
Class cls = ad.getClass();
for (int i = 0; i < n.getChildNodes().getLength(); i++) {
String fieldname = n.getChildNodes().item(i).getNodeName();
Field field = cls.getDeclaredField(fieldname);
field.set(ad, n.getChildNodes().item(i).getFirstChild()
.getNodeValue());

// System.out.println("field"+field.toString());
}
} catch (Exception e) {
// e.printStackTrace();
}
return ad;
}
修改后的解析 public static Vector<CouponDetail> JsonParseAround(String string) {
// System.out.println(string);
Vector<CouponDetail> list = new Vector<CouponDetail>();
try {

JSONObject object = new JSONObject(string);
count = object.getString("count");
type = object.getString("type");
JSONArray jsonArray = (JSONArray) object.get("nearby");

CouponDetail couponDetail = new CouponDetail();

for (int i = 0; i < jsonArray.length(); i++) {

// 解析对象
JSONObject detailObject = jsonArray.getJSONObject(i);
couponDetail.id = detailObject.getString("id");
couponDetail.title = detailObject.getString("title");
System.out.println(couponDetail.title);
couponDetail.address = detailObject.getString("address");
couponDetail.telno = detailObject.getString("telephone");
couponDetail.imgurl = detailObject.getString("imgurl");
couponDetail.distance = detailObject.getString("distance");
// 此处distance是1米,包含“米”这个字
couponDetail.discountType = detailObject
.getString("discountType");
JSONObject location = detailObject.getJSONObject("location");
couponDetail.x = location.getString("x");
couponDetail.y = location.getString("y");
list.add(couponDetail);
}

} catch (JSONException e) {
System.out.println("---");
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}

确认解析没问题
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jgszhuzhu 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
CouponDetail couponDetail = new CouponDetail();
for (int i = 0; i < jsonArray.length(); i++) {
............
list.add(couponDetail);
}
看出问题了吗??
[/Quote]

知道是CouponDetail couponDetail = new CouponDetail();
应该写到循环里面去,昨天晚上同学帮忙看出来了,不过还是谢谢你,我是初次在公司里面写项目,不过还是要感谢你
hvk687 2012-08-14
  • 打赏
  • 举报
回复
CouponDetail couponDetail = new CouponDetail();
for (int i = 0; i < jsonArray.length(); i++) {
............
list.add(couponDetail);
}
看出问题了吗??
jgszhuzhu 2012-08-14
  • 打赏
  • 举报
回复

package com.dld.protocol.json;

import android.graphics.Shader.TileMode;

import com.dld.android.util.LogUtils;
import com.dld.coupon.util.StringUtils;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
* 打折detail
*
* @author dld
*
*/
public class CouponDetail extends JsonBean implements Detail, Serializable {

private static final long serialVersionUID = 1L;
public String address;
public String bank;
public List<BankCouponDetail> banks = new ArrayList<BankCouponDetail>();
public String bizcode;
public String branch_name;
public String bus_route;
public String business_hours;
public String charge_type;
public String cityName;
public int cost;
public int dbId;
public String distance;
public String district;
public String district_name;
public String feature;
public List<GroupDetail> groups = new ArrayList<GroupDetail>();
public String id;
public String introduction;
public String landmark;
public int likes;
public String name = "";
public int parking;
public ArrayList<Phone> phones = new ArrayList<Phone>();
public double poix;
public double poiy;
public int private_room;
public String province_name;
public String recommendation;
public int reservation;
public int seqnum;
public String service_mask;
public int shop_id;
public String short_name;
public String special_offer;
public String style;
public String telno;
public String ticket_price;
public List<Ticket> tickets = new ArrayList<Ticket>();
public String trade_name;
public String wl_discount;
public String x;
public String y;
public String tel;// mirror新添加字段

public String getTel() {
return tel;
}

public void setTel(String tel) {
this.tel = tel;
}

// mirror生成tel get set方法

public String shopid;
public String shopname;
public String catname;
public String discount;
public String rank;

public String disid;
public String title;
public String image;
public String description;

....... get set 方法

// xml解析信息
public static Vector<CouponDetail> fromXmlToAdroundInfo(Element root) {
System.out.println(1);
Vector<CouponDetail> list = new Vector<CouponDetail>(50);
NodeList nlist = root.getElementsByTagName("result");
for (int i = 0; i < nlist.getLength(); i++) {
list.add(fromNode(nlist.item(i)));

// System.out.println("add"+fromNode(nlist.item(i)).getAddress()+"街店名字"+fromNode(nlist.item(i)).getShopname()+"街店坐标"+fromNode(nlist.item(i)).x+":"+fromNode(nlist.item(i)).y);
}
// System.out.println("list"+list.toString());
return list;
}

private static CouponDetail fromNode(Node n) {
CouponDetail ad = new CouponDetail();
try {
Class cls = ad.getClass();
for (int i = 0; i < n.getChildNodes().getLength(); i++) {
String fieldname = n.getChildNodes().item(i).getNodeName();
Field field = cls.getDeclaredField(fieldname);
field.set(ad, n.getChildNodes().item(i).getFirstChild()
.getNodeValue());

// System.out.println("field"+field.toString());
}
} catch (Exception e) {
// e.printStackTrace();
}
return ad;
}

public static Vector<CouponDetail> JsonParseAround(String string) {
// System.out.println(string);
Vector<CouponDetail> list = new Vector<CouponDetail>();
try {

JSONObject object = new JSONObject(string);
count = object.getString("count");
type = object.getString("type");
JSONArray jsonArray = (JSONArray) object.get("nearby");

CouponDetail couponDetail = new CouponDetail();

for (int i = 0; i < jsonArray.length(); i++) {

// 解析对象
JSONObject detailObject = jsonArray.getJSONObject(i);
couponDetail.id = detailObject.getString("id");
couponDetail.title = detailObject.getString("title");
System.out.println(couponDetail.title);
couponDetail.address = detailObject.getString("address");
couponDetail.telno = detailObject.getString("telephone");
couponDetail.imgurl = detailObject.getString("imgurl");
couponDetail.distance = detailObject.getString("distance");
// 此处distance是1米,包含“米”这个字
couponDetail.discountType = detailObject
.getString("discountType");
JSONObject location = detailObject.getJSONObject("location");
couponDetail.x = location.getString("x");
couponDetail.y = location.getString("y");
list.add(couponDetail);
}

} catch (JSONException e) {
System.out.println("---");
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}

}


jgszhuzhu 2012-08-14
  • 打赏
  • 举报
回复
在adater里面取数据的时候发现取的总是第一个
jgszhuzhu 2012-08-14
  • 打赏
  • 举报
回复
我主要是看对于数据设置有没有区别 {"error_message":"","category":"","type":"\u7b7e\u7ea6\u5546\u5bb6","count":"1000","nearby":[{"id":"43479","title":"\u7687\u6d3e\u9152\u5e84","address":"\u6df1\u5733\u5e02\u798f\u7530\u533a\u6df1\u5357\u5927\u90536025\u53f7\u82f1\u9f99\u5927\u53a6\u9996\u5c42","telephone":"0755-33980136","imgurl":"http:\/\/****.com\/images\/pub\/def_sp.jpg","distance":"564\u7c73","discountType":"\u7b7e\u7ea6\u5546\u5bb6","location":{"x":114.02825927734,"y":22.540784835815}},



是不是这两种对数据的设置有出入呢
hvk687 2012-08-14
  • 打赏
  • 举报
回复
给一个数据的sample data看看

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧