标签:tac nic sse under 终端 extends nbsp get htm
摘自:http://www.cnblogs.com/zhenjing/p/json-smart.html
地址:https://github.com/alibaba/fastjson
=======================================================
json是一种通用的数据格式。相比与protocal buffer、thrift等数据格式,json具有可读性强(文本)、天生具备良好的扩展性(随意增减字段)等优良特点,利用json作为通讯协议,开发效率更高。当然相较于二进制协议,文本更耗带宽。
json和HTTP协议都是基于文本的,天生的一对。面对多终端的未来,使用Json和HTTP作为前端架构的基础将成为开发趋势。
简介
json-smart官方主页:https://code.google.com/p/json-smart/
特性:https://code.google.com/p/json-smart/wiki/FeaturesTests
性能评测:https://code.google.com/p/json-smart/wiki/Benchmark
Json-smart-API: http://www.jarvana.com/jarvana/view/net/minidev/json-smart/1.0.9/json-smart-1.0.9-javadoc.jar!/net/minidev/json/package-summary.html
javadoc: https://github.com/u2waremanager/maven-repository/blob/master/net/minidev/json-smart/1.1.1/json-smart-1.1.1-javadoc.jar
使用示例
import net.minidev.json.JSONObject;
import net.minidev.json.JSONValue;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONStyle;
import net.minidev.json.parser.ParseException;
import java.io.UnsupportedEncodingException;
import java.util.*;
/*
* Home page: http://code.google.com/p/json-smart/
*
* compiler: javac -cp json-smart-1.1.1.jar JsonSmartTest.java
*
* Run: java -cp ./:json-smart-1.1.1.jar JsonSmartTest
*
*/
public class JsonSmartTest {
//1. String JsonObject
public static void DecodingTest() throws ParseException {
System.out.println("=======decode=======");
String s="[0,{‘1‘:{‘2‘:{‘3‘:{‘4‘:[5,{‘6‘:7}]}}}}]";
Object obj=JSONValue.parse(s);
JSONArray array=(JSONArray)obj;
System.out.println("======the 2nd element of array======");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2=(JSONObject)array.get(1);
System.out.println("======field \"1\"==========");
System.out.println(obj2.get("1"));
s="{}";
obj=JSONValue.parse(s);
System.out.println(obj);
s="{\"key\":\"Value\"}";
// JSONValue.parseStrict()
// can be use to be sure that the input is wellformed
obj=JSONValue.parseStrict(s);
JSONObject obj3=(JSONObject)obj;
System.out.println("====== Object content ======");
System.out.println(obj3.get("key"));
System.out.println();
}
public static void EncodingTest() {
System.out.println("=======EncodingTest=======");
// Json Object is an HashMap extends
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", 100);
obj.put("balance", 1000.21);
obj.put("is_vip", true);
obj.put("nickname",null);
System.out.println("Standard RFC4627 JSON");
System.out.println(obj.toJSONString());
System.out.println("Compacted JSON Value");
System.out.println(obj.toJSONString(JSONStyle.MAX_COMPRESS));
// if obj is an common map you can use:
System.out.println("Standard RFC4627 JSON");
System.out.println(JSONValue.toJSONString(obj));
System.out.println("Compacted JSON Value");
System.out.println(JSONValue.toJSONString(obj, JSONStyle.MAX_COMPRESS));
}
public static void EncodingTest2() {
System.out.println("=======EncodingTest2=======");
// Json Object is an HashMap extends
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", 100);
obj.put("balance", 1000.21);
obj.put("is_vip", true);
obj.put("nickname",null);
//Output Compressed json
Object value = obj;
String com_json = JSONValue.toJSONString(value, JSONStyle.MAX_COMPRESS);
String json = JSONValue.toJSONString(value, JSONStyle.NO_COMPRESS);
System.out.println("Compacted JSON Value");
System.out.println(com_json);
System.out.println("From RFC4627 JSON String: " + JSONValue.compress(json));
System.out.println("From Compacted JSON String: " + JSONValue.compress(com_json));
System.out.println("Standard RFC4627 JSON Value");
System.out.println(json);
System.out.println("From RFC4627 JSON String: " + JSONValue.uncompress(json));
System.out.println("From Compacted JSON String: " + JSONValue.uncompress(com_json));
//from compress json string
System.out.println("From compress json string(JSONObject)");
Object obj2=JSONValue.parse(com_json);
System.out.println(JSONValue.toJSONString(obj2, JSONStyle.NO_COMPRESS));
System.out.println(JSONValue.toJSONString(obj2, JSONStyle.MAX_COMPRESS));
}
//2. Java Struct JsonSmart object
public class Person {
String name;
int age;
boolean single;
long mobile;
public String getName(){
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public boolean getSingle() {
return this.single;
}
public void setSingle(boolean single) {
this.single = single;
}
public long getMobile() {
return mobile;
}
public void setMobile(long mobile) {
this.mobile = mobile;
}
}
public class JSONDomain { // for convert struct json
public Object result = new JSONObject();
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
}
public void Struct2JsonObject() {
System.out.println("========Struct2JsonObject=======");
Person person = new Person();
person.setName("json smart");
person.setAge(13);
person.setMobile(20130808);
Person person2 = new Person();
person2.setName("test");
person2.setAge(123);
person2.setMobile(888666);
List array = new ArrayList();
array.add(person);
array.add(person2);
//1. struct JsonObject
JSONObject obj = new JSONObject();
//obj = (Object)person; // compiler error!
// way 1:
JSONDomain data = new JSONDomain(); // for convert
data.setResult(person);
// obj = (JSONObject)data.getResult(); // run error: ClassCastException
obj.put("person", data.getResult());
System.out.println(JSONValue.toJSONString(obj));
// way 2:
obj.put("person", array.get(1));
System.out.println(JSONValue.toJSONString(obj));
//2. Container JsonObject
JSONArray jsonArray = new JSONArray();
jsonArray.add(person);
jsonArray.add(person2);
JSONObject result = new JSONObject();
result.put("persons", jsonArray);
System.out.println(JSONValue.toJSONString(result));
}
//3. JsonSmartSerializationTest
public static Map testBytes2Map(byte[] bytes) {
Map map = null;
try {
map = (Map) JSONValue.parseStrict((new String(bytes, "UTF-8")));
} catch (ParseException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return map;
}
// JsonSmartSerializationTest
public static byte[] testMap2Bytes(Map map) {
String str = JSONObject.toJSONString(map);
byte[] result = null;
try {
result = str.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) throws Exception {
DecodingTest();
EncodingTest();
EncodingTest2();
JsonSmartTest test = new JsonSmartTest();
test.Struct2JsonObject();
}
}
解析文件示例
import net.minidev.json.JSONObject;
import net.minidev.json.JSONValue;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONStyle;
import net.minidev.json.parser.ParseException;
import java.io.UnsupportedEncodingException;
import java.util.*;
import java.lang.StringBuffer;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
/*
* Home page: http://code.google.com/p/json-smart/
*
* compiler: javac -cp json-smart-1.1.1.jar JsonTool.java
*
* Run: java -cp ./:json-smart-1.1.1.jar JsonTool
*
*/
public class JsonTool {
//1. String JsonObject
public static void ParseData(String data) throws ParseException {
System.out.println("=======decode=======");
// s="{\"key\":\"Value\"}";
Object obj = JSONValue.parseStrict(data);
JSONObject obj3 = (JSONObject)obj;
System.out.println(obj3.get("data"));
System.out.println();
}
public static void EncodingTest() {
System.out.println("=======EncodingTest=======");
// Json Object is an HashMap extends
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", 100);
obj.put("balance", 1000.21);
obj.put("is_vip", true);
obj.put("nickname",null);
System.out.println("Standard RFC4627 JSON");
System.out.println(obj.toJSONString());
System.out.println("Compacted JSON Value");
System.out.println(obj.toJSONString(JSONStyle.MAX_COMPRESS));
// if obj is an common map you can use:
System.out.println("Standard RFC4627 JSON");
System.out.println(JSONValue.toJSONString(obj));
System.out.println("Compacted JSON Value");
System.out.println(JSONValue.toJSONString(obj, JSONStyle.MAX_COMPRESS));
}
public static void main(String[] args) throws Exception {
if( args.length ) {
System.out.println("Usage: JsonTool file");
System.exit(-1);
}
String file = args[0];
System.out.println(file);
StringBuffer strBuffer = new StringBuffer();
InputStreamReader inputReader = null;
BufferedReader bufferReader = null;
OutputStream outputStream = null;
try
{
InputStream inputStream = new FileInputStream(file);
inputReader = new InputStreamReader(inputStream);
bufferReader = new BufferedReader(inputReader);
// 读取一行
String line = null;
while ((line = bufferReader.readLine()) != null)
{
strBuffer.append(line);
}
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
finally
{
// OtherUtilAPI.closeAll(outputStream, bufferReader, inputReader);
}
//System.out.println(strBuffer.toString());
//System.out.println("\n");
ParseData(strBuffer.toString());
}
}
json-smart 使用示例(推荐fastjson)
标签:tac nic sse under 终端 extends nbsp get htm
原文地址:http://www.cnblogs.com/GaoAnLee/p/7305833.html