5xnl 发表于 2013-2-3 12:55:11

将Json格式的拍拍区域js文件转换为insert...格式的sql文件

拍拍区域js文件网址:http://static.paipaiimg.com/js/regiondata.js?t=20091111

树形结构网址:http://pop.paipai.com/resources/address.html

需取出js文件中的Json数据,不能直接使用js文件。

代码如下:
import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;import java.util.Map;import com.winxuan.paipai.domain.area.PaipaiArea;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/** * 将拍拍Json格式的js文件转换为insert...格式的sql文件 ** @author qiaoyao * @version 1.0,2010-6-13 */public class PaipaiAreaTest {private static final String insertNoParent = "insert into paipai_area(id,name,available) values(%d,'%s',1);";private static final String insertWidthParent = "insert into paipai_area(id,name,available,parent) values(%d,'%s',1,%d);";private static BufferedWriter output;public static void main(String[] args) throws IOException {output = new BufferedWriter(new FileWriter("d:/sql_area.txt"));getArea(JsonConvertTestUtils.JSON_AREA, null);output.close();System.out.println("生成d:/sql_area.txt成功!!!");}@SuppressWarnings("unchecked")public static void getArea(String str, PaipaiArea parent) {JSONObject jsonCountry = JSONObject.fromObject(str);Iterator<?> iteratorProvince = jsonCountry.entrySet().iterator();PaipaiArea area;while (iteratorProvince.hasNext()) {area = new PaipaiArea();Map.Entry<String, JSONArray> mapProvince = (Map.Entry<String, JSONArray>) iteratorProvince.next();area.setParent(parent);area.setId(new Integer(mapProvince.getKey()));JSONArray jsonArray = mapProvince.getValue();if (jsonArray.size() > 0) {area.setName(jsonArray.get(0).toString());printInsertSql(area);if (jsonArray.size() > 2) {getArea(jsonArray.get(2).toString(), area);}}}}public static void printInsertSql(PaipaiArea area) {String result = "";if (area.getParent() != null) {result = String.format(insertWidthParent, area.getId(), area.getName(), area.getParent().getId());} else {result = String.format(insertNoParent, area.getId(), area.getName());}try {output.write(result + "\n");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.nio.charset.Charset;/** * Json格式数据常量类 ** @author qiaoyao * @version 1.0,2010-6-2 */public class JsonConvertTestUtils {public static String JSON_ORDER_LIST = "";public static String JSON_ORDER = "";public static String JSON_ITEM_LIST = "";public static String JSON_ITEM = "";public static String JSON_AREA = "";static {try {String currentPath = "d:/temp";JSON_ORDER_LIST = readerFile(currentPath + "/orderList.txt");JSON_ORDER = readerFile(currentPath + "/order.txt");JSON_ITEM = readerFile(currentPath + "/item.txt");JSON_AREA = readerFile(currentPath + "/area.txt");} catch (IOException e) {e.printStackTrace();}}public static String readerFile(String path) throws IOException {BufferedReader reader = null;StringBuffer sb = new StringBuffer();reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), Charset.forName("gbk")));String tempString = "";while ((tempString = reader.readLine()) != null) {sb.append(tempString);}return sb.toString();}}

import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;import javax.persistence.Table;import com.xhbs.b2c.domain.codetable.Area;/** * Paipai区域对象 ** @author qiaoyao * @version 1.0,2010-6-13 */@Entity@Table(name = "paipai_area")public class PaipaiArea {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;@Column(name = "name")private String name;@Column(name = "description")private String description;@Column(name = "available")private boolean available;@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "parent")private PaipaiArea parent;@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.LAZY, targetEntity = PaipaiArea.class)private Set<PaipaiArea> children;@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, targetEntity = Area.class)@JoinTable(name = "paipai_areamapping", joinColumns = { @JoinColumn(name = "_paipaiarea") }, inverseJoinColumns = { @JoinColumn(name = "_b2carea") })private Area area;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public boolean isAvailable() {return available;}public void setAvailable(boolean available) {this.available = available;}public PaipaiArea getParent() {return parent;}public void setParent(PaipaiArea parent) {this.parent = parent;}public Set<PaipaiArea> getChildren() {return children;}public void setChildren(Set<PaipaiArea> children) {this.children = children;}public Area getArea() {return area;}public void setArea(Area area) {this.area = area;}}
页: [1]
查看完整版本: 将Json格式的拍拍区域js文件转换为insert...格式的sql文件