一、Json与String的相互转换
1、String转换成Json对象
String data="{"a":"A","b":"B"}";
JSONObject data_temp = JSONObject.parseObject(data);
2、Json转换成String
String data_String=JSONObject.toJSONString(data_temp);
3、String与HashMap之间的转换
Map<String, Object> config_Object = JSONObject.parseObject(data_temp_detail.getString("configList"));
Collection<String> collection = config_Object.keySet();
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
AutotestConfigEntity adce = new AutotestConfigEntity();
String clusterName = "";
clusterName = iterator.next();
// adce.setJobId(jobId);
adce.setClusterName(clusterName);
try {
adce.setConfigTypeId(
ClusterConfig.environmentToConfigId(String.valueOf(config_Object.get(clusterName))));
adList.add(adce);
} catch (Exception e) {
e.printStackTrace();
}
}
4、如果需要在数组中添加新的对象,就要每一次都要new一个新的对象,不能讲实例化对象的操作放到循环体以外,否则会添加一个对象,而且是重复最后一个的值
while (iterator.hasNext()) {
AutotestConfigEntity adce = new AutotestConfigEntity();
String clusterName = "";
clusterName = iterator.next();
// adce.setJobId(jobId);
adce.setClusterName(clusterName);
try {
adce.setConfigTypeId(
ClusterConfig.environmentToConfigId(String.valueOf(config_Object.get(clusterName))));
adList.add(adce);
} catch (Exception e) {
e.printStackTrace();
result.setCode(2);
result.setMsg("系统异常");
new StringActionResult(JSONObject.toJSONString(result));
}
5、实战练习
/**
* 测试将字符串转化为JSONArray
* 然后取出特定的值
* import net.sf.json.JSONArray;
* import net.sf.json.JSONObject;
* import org.apache.commons.lang.StringUtils;
*/
@Test
public void test2(){
String sCheck;//待检测字符串
//null 场景
String s0=null;
//空串场景
String s1="";
//包含且只包含一个场景
String s2="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";
//不包含,但是有其他场景
String s3="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"}]";
//混合包含且包含正确的场景-靠后
String s4="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"},{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";
//混合包含且包含正确的场景-靠前
String s5="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"},{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"}]";
sCheck=s5;
String result ="0";//名字1默认为0
if(StringUtils.isNotBlank(sCheck)){//如果字符串不为空
JSONArray jary=JSONArray.fromObject(sCheck);
for(int i=0;i<jary.size();i++){
JSONObject job=JSONObject.fromObject(jary.get(i).toString());
if("type1".equals((String)job.get("type"))){
System.out.println("预期的type值"+(String)job.get("type"));
result=(String)job.get("group");//获取对应的名字1
break;//循环终止
}else{
System.out.println("非预期的type值"+(String)job.get("type"));
}
}
}
System.out.println("名字1的值为:"+result);
}