java中的json使用
java本身并没有实现对json的支持。于是各路神仙大显神通。查了下,似乎大家比较倾向于使用阿里巴巴的fastjson。正如在.net的世界里,基本上都用newtonsoft.json一样。fastjson,从名字就可以看出来,它是号称很快的哟。
下面是一些例子。
pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
实战代码
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
static final int _ppNodeIndex = 8;
static final int _tpNodeIndex = 12;
static final int _tpIndex = 2;
private String mountForecast(String data) {
JSONObject jdata = JSONObject.parseObject(data);//反序列化成JSON对象
JSONArray monkeys = jdata.getJSONArray("animals").getJSONArray(_ppNodeIndex);//读取JSON对象中,
//animals这个元素(是个数组)里面第某个元素(也是个数组)
for (Object objp : monkeys) {
JSONArray monkey = (JSONArray) objp;
JSONArray tNode = path.getJSONArray(_tpNodeIndex);
if (tNode.size() <= _tpIndex) {
continue;
}
……
}
return jdata.toString();
}
//
private void getForecastByOrg(String orgName,JSONArray tNode,List<Tf_Forecast> lisF,JSONArray path){
JSONArray arf = new JSONArray();
for (Tf_Forecast f : lisfn) {
JSONArray arfi = new JSONArray();
arfi.add(f.getT());
arfi.add(f.getFDATE());
arfi.add(f.getLON());
arfi.add(f.getLAT());
arfi.add(f.getMINSLP());
arfi.add(f.getMAXWIND());
arfi.add(f.getORG());
arfi.add(f.getTYPE());
arfi.add(f.getRADIUS());
arf.add(arfi);
}
if(path.get(_fpNodeIndex) != null){
((JSONObject)path.get(_fpNodeIndex)).put(orgName, arf);
} else {
JSONObject org = new JSONObject();
org.put(orgName, arf);
path.set(_fpNodeIndex,org);
}
}
以上代码摘自实际项目,因为不完整,比较乱。但JSON对象的元素无非就是单个值,或者数组。JSONObject、JSONArray一招鲜,吃遍天。
还没有评论,来说两句吧...