对于解析处理json字符串,修改对象key值感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解修改json的key,并且为您提供关于ajax查询数据库,服务器传回json字符串,js解析jso
对于解析处理json字符串,修改对象key值感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解修改json的key,并且为您提供关于ajax查询数据库,服务器传回json字符串,js解析json、C#处理Json字符串实例分析、C#对象转JSON字符串和JSON字符串转对象、fastjson json 字符串转 JSONObject 对象时 修改 key的宝贵知识。
本文目录一览:- 解析处理json字符串,修改对象key值(修改json的key)
- ajax查询数据库,服务器传回json字符串,js解析json
- C#处理Json字符串实例分析
- C#对象转JSON字符串和JSON字符串转对象
- fastjson json 字符串转 JSONObject 对象时 修改 key
解析处理json字符串,修改对象key值(修改json的key)
目的
分析json 字符串把父 key,拼到子 key 前面
要点
主要就是,分析遍历json,java 主要 注意不同类的处理。
package demo.my;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* json 处理, 分析json 并吧父 key,拼到子 key 上
* 注意,json 转 Object 的时候,是那种类型
*/
public class Test01 {
public static void main(String[] args) {
String old = "{\"check_date\":\"2021-03-18\",\"person\":[{\"name\":\"tom\",\"age\":20,\"city\":\"北京\",\"detail\":[{\"postion\":\"大数据开发\",\"sal\":10000},{\"postion\":\"java开发\",\"sal\":20000}]},{\"name\":\"jack\",\"age\":25,\"city\":\"上海\"},{\"name\":\"Jim\",\"age\":22,\"city\":\"杭州\"}],\"city\":\"test\"}";
String andKey = andKey(old);
System.out.println(andKey);
}
/**
* 分析json 并吧父 key,拼到子 key 上
* @param json
* 待分析的 json
* @return
* 处理好的 json
*/
public static String andKey(String json){
if (!JSONUtil.isJson(json)){return json;}
if (JSONUtil.isJsonObj(json)){
Map map = JSONUtil.toBean(json, Map.class);
HashMap<Object, Object> hashMap = new HashMap<>();
map.forEach((a, b) -> {
hashMap.put(a, addRealKey(b, (String) a));
});
return JSONUtil.toJsonStr(hashMap);
}else {
JSONArray objects = JSONUtil.parseArray(json);
List<Map> list = objects.toList(Map.class);
ArrayList<Object> arrayList = new ArrayList<>();
list.forEach(a -> arrayList.add(addRealKey(a, "")));
return JSONUtil.toJsonStr(arrayList);
}
}
/**
* 更深层次的 json 解析
* @param b
* json 初步解析的对象
* @param c
* 需要添加的前缀信息。
* @return
* 添加好前缀的数据。
*/
private static Object addRealKey(Object b, String c) {
if (b instanceof JSONArray){
JSONArray objects = (JSONArray) b;
List<Map> list = objects.toList(Map.class);
ArrayList<Object> arrayList = new ArrayList<>();
list.forEach(a -> arrayList.add(addRealKey(a, c)));
return arrayList;
}else if (b instanceof Map){
Map map = (Map) b;
HashMap<Object, Object> hashMap = new HashMap<>();
map.forEach((pre, v) -> {
if (StrUtil.isNotBlank(c)){
hashMap.put( c + "#" + pre, addRealKey(v, c + "#" + pre));
}else {
hashMap.put(pre, addRealKey(v, (String) pre));
}
});
return hashMap;
}else {
return b;
}
}
}
ajax查询数据库,服务器传回json字符串,js解析json
服务器端获得要查询的东西,查询数据库,将查询的信息,以json字符串的形式返回给浏览器
public void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { String departmentID=request.getParameter("departmentID"); DataBaseHandle dataBaseHandle=new DataBaseHandle("commonUser","common","jdbc:MysqL://127.0.0.1:3306/firstwebsite"); String sql="select * from speciality where departmentID='"+departmentID+"'"; String json="{'specialities':["; response.setContentType("text/html; charset=utf-8"); response.setCharacterEncoding("UTF-8"); try { ResultSet rs=dataBaseHandle.exeutesql(sql); while(rs.next()) { json=json+"{'"+"specialityID':'"+rs.getString(1)+"',"+"'SPname':'"+rs.getString(2)+"'},"; System.out.println(rs.getString(1)+rs.getString(2)); } json=json.substring(0,json.length()-1); json=json+"]}"; PrintWriter pwriter=response.getWriter(); pwriter.print(json); rs.close(); dataBaseHandle.closeResourse(); } catch (sqlException e) { // Todo Auto-generated catch block e.printstacktrace(); } }
js解析json,获得返回的内容
function updateSpeciality(str) { var xmlhttp; if (str=="") { alert("请选择非空的值!"); return; } if (window.XMLHttpRequest) {// code for IE7+,Firefox,Chrome,Opera,Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6,IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var dataObj=eval("("+xmlhttp.responseText+")");//转换为json对象 for(var o in dataObj.specialities) { alert(dataObj.specialities[o].specialityID); alert(dataObj.specialities[o].SPname); } } } xmlhttp.open("GET","/First/servlet/GetMessage?departmentID="+str,true); xmlhttp.send(); }
C#处理Json字符串实例分析
Json字符串对于做web应用的应该很熟悉,其实在很多请求我们返回的都是Json字符串。那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDN Library 链接http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx];这个类提供了一个方法。
下面这个是我在快递100往抓取的一个圆通的快递信息。对于我们有用的信息是快递时间,快递状况。那我该如何来做。
{"message":"ok","nu":"9356359685","ischeck":"1","com":"yuantong","status":"200","condition":"F00","state":"3","data":[{"time":"2014-09-01 21:19:06","context":"甘肃省武威市公司 已签收 ","ftime":"2014-09-01 21:19:06"},{"time":"2014-09-01 09:09:28","context":"甘肃省武威市公司 派件中 ","ftime":"2014-09-01 09:09:28"},{"time":"2014-09-01 09:06:27","context":"甘肃省武威市公司 已收入 ","ftime":"2014-09-01 09:06:27"},{"time":"2014-08-31 19:53:47","context":"甘肃省兰州市公司 已发出 ","ftime":"2014-08-31 19:53:47"},{"time":"2014-08-31 19:17:41","context":"甘肃省兰州市公司 已收入 ","ftime":"2014-08-31 19:17:41"},{"time":"2014-08-28 23:44:26","context":"广东省深圳市横岗公司 已打包 ","ftime":"2014-08-28 23:44:26"},{"time":"2014-08-28 23:19:12","context":"广东省深圳市横岗公司 已收件 ","ftime":"2014-08-28 23:19:12"},{"time":"2014-08-28 21:55:35","ftime":"2014-08-28 21:55:35"}]}
1. 首先分析Json字符串结构. Json{ message,nu,isCheck,Data{time,context,ftime}};我们先定义一个类,取名为PostalDeliveryModel,类名的结构需要与Json结构对应,名称需要保持一样[忽略大小写],其次对应的字段说会自动转换类型的,类型如果不符合会抛出异常
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestJson
{
public class PostalDeliveryModel
{
private string message = string.Empty;
private string nu = string.Empty;
private List<SingalData> data = new List<SingalData>();
// Puclic的名字需要与Json字符串相同,但是忽略大小写
public string Message
{
get { return this.message; }
set { this.message = value; }
}
public string Nu
{
get { return this.nu; }
set { this.nu = value; }
}
public List<SingalData> Data
{
get { return this.data; }
set { this.data = value; }
}
}
public class SingalData
{
private DateTime time = System.DateTime.Now;
private string context = string.Empty;
private DateTime ftime = System.DateTime.Now;
public DateTime Time
{
get { return this.time; }
set { this.time = value; }
}
public DateTime FTime
{
get { return this.ftime; }
set { this.ftime = value; }
}
public string Context
{
get { return this.context; }
set { this.context = value; }
}
}
}