1.解析JSON格式数据需要的JAR包:
commons-beanutils.jar
commons-collections-3.1.jar
commons-lang-2.0.jar
commons-logging.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
log4j-1.2.11.jar
morph-1.1.1.jar
2. 解析数据核心代码
Java2JSON.java
package com.syctest.JSON;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import com.syctest.bean.Order;
import com.syctest.bean.OrderDetail;
public class Java2JSON {
public static void main(String[] args) {
String str=getFileCode("E:\\json.txt");
// System.out.println(str);
Java2JSON jj=new Java2JSON();
jj.analyticJson(str);
Order userOrder=jj.analyticJson(str);
System.out.println(userOrder.getReceiver_city()+" "+userOrder.getBuyer_nick()+" "+userOrder.getReceiver_address());
}
/**
* 解析从淘宝返回的订单详情数据
* @param jsonString:淘宝返回的JSON格式数据
* @return:订单详情数据
*/
public Order analyticJson(String jsonString){
//JSON格式数据解析对象
JSONObject jb = JSONObject.fromObject(jsonString);
JSONObject ja = jb.getJSONObject("trade_fullinfo_get_response").getJSONObject("trade");
//需返回的订单对象
Order order = new Order();
order.setBuyer_nick(ja.getString("buyer_nick"));
order.setReceiver_address(ja.getString("receiver_address"));
order.setReceiver_city(ja.getString("receiver_city"));
order.setReceiver_name(ja.getString("receiver_name"));
order.setReceiver_state(ja.getString("receiver_state"));
//区域是否存在
if(ja.containsKey("receiver_district")){
order.setReceiver_district(ja.getString("receiver_district"));
}else{
order.setReceiver_district("");
}
//手机号是否存在
if(ja.containsKey("receiver_mobile")){
order.setReceiver_mobile(ja.getString("receiver_mobile"));
}else{
order.setReceiver_mobile("");
}
//电话是否存在
if(ja.containsKey("receiver_phone")){
order.setReceiver_phone(ja.getString("receiver_phone"));
}else{
order.setReceiver_phone("");
}
//订单明细列表
java.util.List<OrderDetail> goodsList = new java.util.LinkedList<OrderDetail>();
JSONArray orderDetailArr = ja.getJSONObject("orders").getJSONArray("order");
//循环添加订单明细
for(int j=0;j<orderDetailArr.size();j++){
OrderDetail od = new OrderDetail();
od.setNum(orderDetailArr.getJSONObject(j).getString("num"));
// od.setOuter_iid(orderDetailArr.getJSONObject(j).getString("outer_iid"));
od.setPayment(orderDetailArr.getJSONObject(j).getString("payment"));
goodsList.add(od);
}
order.setGoodsList(goodsList);
return order;
}
public static String getFileCode(String fileName) {
String fileCode="";
try {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(fileName));
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
// System.out.println("Available bytes:" + in.available());
byte[] temp = new byte[1024];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
}
in.close();
byte[] content = out.toByteArray();
fileCode = new String(content);
// System.out.println("Readed bytes count:" + content.length);
} catch (Exception e) {
System.out.println("fileReadeCode() Exception :" + e.getMessage());
}
return fileCode;
}
}
Order.java
package com.syctest.bean;
import java.util.List;
public class Order {
String buyer_nick;
List goodsList;
String receiver_address;
String receiver_city;
String receiver_name;
String receiver_state;
String receiver_district;
String receiver_mobile;
String receiver_phone;
public List getGoodsList() {
return goodsList;
}
public void setGoodsList(List goodsList) {
this.goodsList = goodsList;
}
public String getBuyer_nick() {
return buyer_nick;
}
public void setBuyer_nick(String buyer_nick) {
this.buyer_nick = buyer_nick;
}
public String getReceiver_address() {
return receiver_address;
}
public void setReceiver_address(String receiver_address) {
this.receiver_address = receiver_address;
}
public String getReceiver_city() {
return receiver_city;
}
public void setReceiver_city(String receiver_city) {
this.receiver_city = receiver_city;
}
public String getReceiver_name() {
return receiver_name;
}
public void setReceiver_name(String receiver_name) {
this.receiver_name = receiver_name;
}
public String getReceiver_state() {
return receiver_state;
}
public void setReceiver_state(String receiver_state) {
this.receiver_state = receiver_state;
}
public String getReceiver_district() {
return receiver_district;
}
public void setReceiver_district(String receiver_district) {
this.receiver_district = receiver_district;
}
public String getReceiver_mobile() {
return receiver_mobile;
}
public void setReceiver_mobile(String receiver_mobile) {
this.receiver_mobile = receiver_mobile;
}
public String getReceiver_phone() {
return receiver_phone;
}
public void setReceiver_phone(String receiver_phone) {
this.receiver_phone = receiver_phone;
}
}
OrderDetail.java
package com.syctest.bean;
public class OrderDetail {
String num;
String outer_iid;
String payment;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getOuter_iid() {
return outer_iid;
}
public void setOuter_iid(String outer_iid) {
this.outer_iid = outer_iid;
}
public String getPayment() {
return payment;
}
public void setPayment(String payment) {
this.payment = payment;
}
}
淘宝返回json数据格式:
{
"trade_fullinfo_get_response": {
"trade": {
"adjust_fee": "0.00",
"available_confirm_fee": "50.00",
"buyer_alipay_no": "tbtest1062@taobaotest.com",
"buyer_email": "tbtest1062@taobaotest.com",
"buyer_message": "buyerMessage",
"buyer_nick": "tbtest1062",
"buyer_obtain_point_fee": 0,
"buyer_rate": false,
"cod_fee": "0.00",
"created": "2010-05-11 10:32:51",
"discount_fee": "0.00",
"has_post_fee": true,
"iid": "29e5b5d76cb3dc2b627cb3f94988592f",
"modified": "2010-05-11 10:32:51",
"num": 1,
"orders": {
"order": [{
"adjust_fee": "0.00",
"buyer_rate": "false",
"discount_fee": "0.00",
"iid": "29e5b5d76cb3dc2b627cb3f94988592f",
"num": 1,
"oid": 22328007510301,
"payment": "55.00",
"pic_path": "http://img08.taobao.net/bao/uploaded/i8/T1jVXXXePbXXaoPB6a_091917.jpg",
"price": "50.00",
"refund_status": "NO_REFUND",
"seller_rate": "false",
"seller_type": "C",
"sku_id": "5941486",
"sku_properties_name": "颜色:天蓝色;尺码:M",
"snapshot_url": "T1TVXXXn8UXXXfUYZ2.1269918494866_snap",
"status": "TRADE_NO_CREATE_PAY",
"title": "创建交易商品",
"total_fee": "50.00"
}]
},
"payment": "55.00",
"pic_path": "http://img08.taobao.net/bao/uploaded/i8/T1jVXXXePbXXaoPB6a_091917.jpg",
"point_fee": 0,
"post_fee": "5.00",
"price": "50.00",
"real_point_fee": 0,
"received_payment": "0.00",
"receiver_address": "下沙高教园区",
"receiver_city": "北京市",
"receiver_district": "东城区",
"receiver_mobile": "12354252544",
"receiver_name": "夏日香气",
"receiver_phone": "0571-84110653",
"receiver_state": "北京",
"receiver_zip": "123456",
"seller_alipay_no": "tbtest1061@taobaotest.com",
"seller_email": " ",
"seller_name": "我在测试",
"seller_nick": "tbtest1061",
"seller_phone": "010-630239403-123",
"seller_rate": false,
"shipping_type": "express",
"sid": "22328007510301",
"snapshot_url": "T1TVXXXn8UXXXfUYZ2.1269918494866_snap",
"status": "TRADE_NO_CREATE_PAY",
"tid": 22328007510301,
"title": "妙妙的经典小窝",
"total_fee": "50.00",
"type": "independent_shop_trade"
}
}
}
本解析数据例子,可以等效拓展到其他解析文件格式。
毕竟:技术不重要,思想最重要!
本文介绍了一种使用Java解析淘宝返回的JSON格式订单数据的方法。通过读取文件并利用json-lib库将JSON字符串转换为Java对象,实现了订单信息及明细的有效提取。

4281

被折叠的 条评论
为什么被折叠?



