一、json封装和解析思路:
1、解析:主要看object、Array保函关系。及{}、[]保函关系,谁在外就先提取谁。遇到{}用JSONObject,遇到[]用JSONArray。{}中保函[]用jsonobject.getJSONArray,再循环遍历key-value对象。
2、封装:
a、循环遍历数据表数据,得到column信息,
b、put到jsonobject,或put到map,
c、把map对象存到数组中:add到jsonArray中。
二、json前后端整体思路:
1、链接数据库:配置数据库信息、写dao、entity、xml 或写query
2、server层封装数据:使用集合、循环、计算、jsonobject、jsonarray等封装为json表数据。
3、Controller层调用server层的数据。
4、web层调用Controller层接口json数据。
5、web界面写page、js、chartsjs等生成图形信息或需要的表格数据。
java后端封装json:
测试:
code:
//应在server层或Controller层中封装json
//测试json:
//json封装:方式一:jsonobject
JSONObject jsonObject=new JSONObject();
JSONArray jsonArray=new JSONArray();
jsonObject.put("id","12j3ld9d9ssfew0rf8ercf");
jsonObject.put("Name","北京xxxx交通市政工程xxxx");
//.....多个jsonobject
//jsonobject2一般省略,应在循环数据表中加入多个 id、name对象数据。
JSONObject jsonObject2=new JSONObject();
jsonObject2.put("id","4sdf9df7favg6sdf8886afd");
jsonObject2.put("Name","天津xxxxx机械xxxxx");
jsonArray.add(jsonObject);
jsonArray.add(jsonObject2);
System.out.println("jsonobject:"+jsonArray.toString());
//json封装:方式二:Map泛型
JSONArray jsonarray2=new JSONArray();
Map<String ,String> map=new HashMap();
map.put("id","45l08asd7fg5afgf7sde64fda");
map.put("Name","北京xxxxx项目xxxx");
//map2可省略,应在循环中加入map。
Map<String,String> map2=new HashMap();
map2.put("id","4ld9ffae8rgd90rws8r");
map2.put("Name","太原xxxx招标项目");
jsonarray2.add(map);
jsonarray2.add(map2);
System.out.println("Map:"+jsonarray2.toString());
排序:
code:
//没有必要用TreeMap(Map<String,String> treemap=new TreeMap();),请先sql索引关键字排序好每条数据,在封装为JSON。
//若单条数据column排序,建议用TreeMap
Map<String,String> map=new TreeMap();
map.put("id","sdfs8d6f5afd679f0adff8");
map.put("Zxxx","info9");
map.put("Txxx","info6");
map.put("Bxxx","info2");
JSONArray jsonArray=new JSONArray();
jsonArray.add(map);
System.out.println(jsonArray.toString());
java后端解析json:
测试:
code:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class jsontest {
public static void main(String[] args) {
//在此仅为测试,正式的请在server层写逻辑。
//page反馈:{"projectResponse":{"Projectdata":[{"projectName":"北京xxx地铁xxx项目招标","projectType":"招标"},{"projectName":"天津xxx造价工程","projectType":"造价"}]},"status":"ok"}
String jsonstr=" {\"projectResponse\":{\"Projectdata\":[{\"projectName\":\"北京xxx地铁xxx项目招标\",\"projectType\":\"招标\"}," +
"{\"projectName\":\"天津xxx造价工程\",\"projectType\":\"造价\"}]},\"status\":\"ok\"}";
JSONObject jsonobject=JSONObject.fromObject(jsonstr);
JSONObject projectRes=jsonobject.getJSONObject("projectResponse");
JSONArray jsonarray=projectRes.getJSONArray("Projectdata");
for(int i=0;i<jsonarray.size();i++){
JSONObject Projectinfo=jsonarray.getJSONObject(i);
String projectName=Projectinfo.getString("projectName");
String projectType=Projectinfo.getString("projectType");
System.out.println("项目名称为:"+projectName+",项目类型为:"+projectType);
}
}
}
需要的jar:
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
//json
implementation 'net.sf.json-lib:json-lib:2.4:jdk13'
implementation 'commons-beanutils:commons-beanutils:1.9.3'
implementation 'org.apache.commons:commons-collections4:4.4'
implementation 'org.apache.commons:commons-lang3:3.11'
implementation 'commons-logging:commons-logging:1.2'
}
未完待续....