在Java中利用Jackson解析JSON數據
Jackson 是一個 Java 用來處理 JSON 格式數據的類庫,性能非常好。
易于人閱讀和編寫。同時也易于機器解析和生成
JSON-lib官網:http://json-lib.sourceforge.net/
Jackson官網:http://jackson.codehaus.org/
號稱性能最快的JSON處理器Jackson遠高于JSON_lib
轉化json字符串:
/**
- 使用Jackson生成json格式字符串
@author archie2010 since 2011-4-26下午05:59:46 */ public class JacksonTest {
private static JsonGenerator jsonGenerator = null; private static ObjectMapper objectMapper = null; private static User user = null;
/**
- 轉化實體為json字符串
- @throws IOException */ public static void writeEntity2Json() throws IOException{ System.out.println("使用JsonGenerator轉化實體為json串-------------"); //writeObject可以轉換java對象,eg:JavaBean/Map/List/Array等 jsonGenerator.writeObject(user); System.out.println(); System.out.println("使用ObjectMapper-----------"); //writeValue具有和writeObject相同的功能 objectMapper.writeValue(System.out, user); } /**
- 轉化Map為json字符串
- @throws JsonGenerationException
- @throws JsonMappingException
- @throws IOException */ public static void writeMap2Json() throws JsonGenerationException, JsonMappingException, IOException{ System.out.println("轉化Map為字符串--------"); Map<String, Object> map=new HashMap<String, Object>(); map.put("uname", user.getUname()); map.put("upwd", user.getUpwd()); map.put("USER", user); objectMapper.writeValue(System.out, map); } /**
- 轉化List為json字符串
- @throws IOException
- @throws JsonMappingException
@throws JsonGenerationException */ public static void writeList2Json() throws IOException{ List<User> userList=new ArrayList<User>(); userList.add(user);
User u=new User(); u.setUid(10); u.setUname("archie"); u.setUpwd("123"); userList.add(u); objectMapper.writeValue(System.out, userList);
objectMapper.writeValue(System.out, userList);
}
public static void main(String[] args) {
user = new User();
user.setUid(5);
user.setUname("tom");
user.setUpwd("123");
user.setNumber(3.44);
objectMapper = new ObjectMapper();
try {
jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
//writeEntity2Json();
//writeMap2Json();
writeList2Json();
} catch (IOException e) {
e.printStackTrace();
}
}
}</pre>[{"number":3.44,"uname":"tom","upwd":"123","uid":5},{"number":0.0,"uname":"archie","upwd":"123","uid":10}]
輸出到瀏覽器端:
StringWriter writer = new StringWriter();
ObjectMapper mapper = new ObjectMapper();
try {
mapper.writeValue(writer, hMap);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out= response.getWriter();
out.print(writer.toString());</pre>
</span>