JSON数据交换、jsonString转jsonObject或jsonArray、json转string方法;string转json;

【JSON数据交换格式在系统间数据调用的处理】

public class Demo {

public static void main(String[] args) {
JSONArray tempJsonArray = null;
Student student = null;//学生信息
String interfaceName = "GetStudentScoreInfo";
String targetAttribute = "studentInfo";
//调用外部系统接口
JSONObject remoteReturnJsonObject = studentService.getStudentScoreInfo(interfaceName, targetAttribute);
boolean successFlag = remoteReturnJsonObject.getBoolean("success");// 调用接口是否成功
if (successFlag) {
tempJsonArray = parseTargetJsonObject(remoteReturnJsonObject,targetAttribute);
if (null!=tempJsonArray&& tempJsonArray.size() > 0) {
JSONObject tempJSONObject = (JSONObject) tempJsonArray.get(0);
student = JSONObject.parseObject(tempJSONObject.toString(),Student.class);//映射为学生信息
}
}
}

/*
* 处理外部系统返回的JSON数据
*/
private static JSONArray parseTargetJsonObject(JSONObject targetJsonObject, String method) {
JSONArray jsonArray = null;//返回对象
JSONObject jsonObject = null;
if (targetJsonObject != null) {
jsonObject = targetJsonObject.getJSONObject("responseData");
}
if (jsonObject != null) {
jsonArray = jsonObject.getJSONArray(method);
}
return jsonArray;
}
}

【jsonString转jsonObject或jsonArray】

package com.demo;
import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
public class Demo {
public static void main(String[] args) throws Exception, Exception {
String sourceJsonStr="{\"student\":[{\"countryName\":\"ZG\",\"departmentName\":\"Computer\",\"gradeName\":\"g3\",\"className\":\"c4\"},{\"countryName\":\"MG\",\"departmentName\":\"Electronic\",\"gradeName\":\"g2\",\"className\":\"c1\"},{\"countryName\":\"DG\",\"departmentName\":\"Math\",\"gradeName\":\"g4\",\"className\":\"c3\"}]}";
//任务一、取数据集中的某个属性值
JSONObject jsonObject=JSONObject.parseObject(sourceJsonStr);
List<?> studentList=JSONArray.parseArray(jsonObject.getString("student"), Student.class);
Object student=studentList.get(0);
String departmentValue = org.apache.commons.beanutils.BeanUtils.getProperty(student, "departmentName");
System.out.println("系别departmentName="+departmentValue);
//任务二、转换数据集
//编码映射处理前,打印studentList
for (Object stu : studentList) {
System.out.println("输出stu="+stu.toString());
}
//字段值对应的编码映射
String jsonObjectStr="{\"countryName\":{\"ZG\":\"中国\",\"MG\":\"美国\",\"DG\":\"德国\",\"ELSG\":\"俄罗斯\"},\"departmentName\":{\"Chinese\":\"中文系\",\"Foreign\":\"外文系\",\"Computer\":\"计算机系\",\"Electronic\":\"电子工程系\",\"Physics\":\"物理系\",\"Math\":\"数学系\"},\"gradeName\":{\"g1\":\"大学一年级\",\"g2\":\"大学二年级\",\"g3\":\"大学三年级\",\"g4\":\"大学四年级\"},\"className\":{\"c1\":\"1班\",\"c2\":\"2班\",\"c3\":\"3班\",\"c4\":\"4班\"}}";
Map<String, String> targetMap = null;
TypeReference<LinkedHashMap<String, String>> typeReference = new TypeReference<LinkedHashMap<String, String>>() {
};
if (StringUtils.isNotBlank(jsonObjectStr)) {
targetMap = JSONObject.parseObject(jsonObjectStr, typeReference);//Map<String, String>
}
if (null!=targetMap && targetMap.size() > 0) {
for (Object stu : studentList) {
for (Iterator<String> it = targetMap.keySet().iterator(); it.hasNext();) {
String key = it.next();//如 department
String keyJsonObjectValue = targetMap.get(key);//如 {"Electronic":"电子工程系","Foreign":"外文系","Physics":"物理系","Math":"数学系","Computer":"计算机系","Chinese":"中文系"}
// System.out.println("对象名称key="+key);
// System.out.println("对象值jsonObjectValue="+jsonObjectValue);
String keyValue = org.apache.commons.beanutils.BeanUtils.getProperty(stu, key);//原始字符串里属性key对应的值 如:Computer
LinkedHashMap<String, String> codeMap = JSONObject.parseObject(keyJsonObjectValue, typeReference);//某种属性编码映射Map LinkedHashMap<String, String>
//
Field field = stu.getClass().getDeclaredField(key);
field.setAccessible(true);//不加该句将报错:can not access a member of class com.demo.Student with modifiers "private"
field.set(stu, codeMap.get(keyValue));
}
}
System.out.println("编码映射处理结束。。。");
//编码映射处理后,打印studentList
for (Object stu : studentList) {
System.out.println("输出stu="+stu.toString());
}
}
}
}


效果图:
[img]http://dl2.iteye.com/upload/attachment/0129/0043/61ebb232-dda6-3f83-89fc-a5df759a092c.png[/img]
二、
//json转string
function jsonToString (obj){   
var THIS = this;
switch(typeof(obj)){
case 'string':
return '"' + obj.replace(/(["\\])/g, '\\$1') + '"';
case 'array':
return '[' + obj.map(THIS.jsonToString).join(',') + ']';
case 'object':
if(obj instanceof Array){
var strArr = [];
var len = obj.length;
for(var i=0; i<len; i++){
strArr.push(THIS.jsonToString(obj[i]));
}
return '[' + strArr.join(',') + ']';
}else if(obj==null){
return 'null';

}else{
var string = [];
for (var property in obj) string.push(THIS.jsonToString(property) + ':' + THIS.jsonToString(obj[property]));
return '{' + string.join(',') + '}';
}
case 'number':
return obj;
case false:
return obj;
}
}

===========================================================
String arr=new String(request.getParameter("arr").getBytes("ISO8859-1"), "UTF-8");
var arr2='<%=arr%>';
var list=eval('('+arr2+')');//用eval函数将json转化为对象
alert(list[0].fileName);
alert(list[1].fileName);
alert(list[2].fileName);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值