/**
*
*/
package com.XXX.json;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import com.XXX.utils.Constant;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
/**
* @author
*
*/
public class JsonAndXml {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ParserJsonFromFile();
}
private static void ParserJsonFromFile() {
// TODO Auto-generated method stub
String mJsonString = getJsonFromFile();
ParseJson(mJsonString);
}
private static void ParseJson(String mJsonString) {
// TODO Auto-generated method stub
//1.定义json对象
JSONObject mObject = new JSONObject(mJsonString);
JSONObject data = mObject.getJSONObject("data");
//2.定义json数组对象,该字段定义带有[]
JSONArray tags = data.getJSONArray("tag");
String cdn = null;
String fileId = null;
StringBuffer mCdnBuffer = new StringBuffer();
StringBuffer mFileIdBuffer = new StringBuffer();
//3.逐个解析json数组tags的每个对象
for (int i = 0; i < tags.length(); i++) {
//4.json数组每个对象又定义成一个json对象
JSONObject tag = tags.getJSONObject(i);
//5.重新定义的json对象内有具有数组对象[]
JSONArray sources = tag.getJSONArray("source");
//6.逐个解析json数组sources的每个对象
for (int j = 0; j < sources.length(); j++) {
//7.具体定义解析的操作
JSONObject source = sources.getJSONObject(j);
cdn = source.getString("cdn");
fileId = source.getString("fileId");
mCdnBuffer.append(cdn + ", ");
mFileIdBuffer.append(fileId + ", ");
}
}
System.out.println("mCdnBuffer = " + mCdnBuffer.toString());
System.out.println("mFileIdBuffer = " + mFileIdBuffer.toString());
}
/**
* 将字节流转换成字符流并通过缓冲去读取
* */
private static String getJsonFromFile() {
String mPathname = null;
String jsonString = null;
mPathname = Constant.JSON_PATH + File.separator+ "273389.json";
File mFile = new File(mPathname);
try {
StringBuffer mSBuffer = new StringBuffer();
InputStream mInputStream = new FileInputStream(mFile);
InputStreamReader mInputStreamReader = new InputStreamReader(mInputStream, "utf-8");
BufferedReader mBufferedReader = new BufferedReader(mInputStreamReader);
String str = null;
while ((str = mBufferedReader.readLine()) != null) {
mSBuffer.append(str);
}
jsonString = mSBuffer.toString();
mInputStream.close();
mInputStream.close();
mBufferedReader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("jsonString = " + jsonString);
return jsonString;
}
}