java本身并没有实现对json的支持。于是各路神仙大显神通。查了下,似乎大家比较倾向于使用阿里巴巴的fastjson。正如在.net的世界里,基本上都用newtonsoft.json一样。fastjson,从名字就可以看出来,它是号称很快的哟。
下面是一些例子。
pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
实战代码
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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
以上代码摘自实际项目,因为不完整,比较乱。但JSON对象的元素无非就是单个值,或者数组。JSONObject、JSONArray一招鲜,吃遍天。