GVKun编程网logo

解析处理json字符串,修改对象key值(修改json的key)

13

对于解析处理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)

解析处理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

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字符串实例分析

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; }
        }
    }
}

     2.对象什么好后只需要调用方法即可:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Web.Script.Serialization; // 此命名空间对应的框架是 System.Web.Extensions
namespace TestJson
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string jsonStr = new StreamReader("JsonData.txt").ReadToEnd();
            PostalDeliveryModel mode = new JavaScriptSerializer().Deserialize<PostalDeliveryModel>(jsonStr);
            Console.ReadKey();
        }
    }
}

       3.运行监控model对象.数据已经在对象里面了。

    4.方法回顾,虽然获取到了。不过这种方法类的Public属性名称必须与Json字符串对应,不知道可否通过在Public属性的上面加上[标签]来映射,这样可以自定义名称,不再需要与Json里面名称一样。求其他大牛在评论的时候指点一下。

以上所述就是对于c#如何处理json字符串的全部内容了,希望大家能够喜欢。

C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象
 
/* 创建者:菜刀居士的博客
 * 创建日期: 2014年09月03号
 * 功能: Json操作
 *
  */
 
namespace Net.String.ConsoleApplication
 {
    using System;
    using System.Data;
    using System.Collections;
    using System.ComponentModel;
    using System.Collections.Generic;
    using System.Web.Script.Serialization;
  
 
    public class JsonHelper
    {
        /// <summary>
        /// 把json字符串转成对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="data">json字符串</param>
        public static T Deserialize<T>(string data)
        {
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            return json.Deserialize<T>(data);
        }
 
        /// <summary>
        /// 把对象转成json字符串
        /// </summary>
        /// <param name="o">对象</param>
        /// <returns>json字符串</returns>
        public static string Serialize(object o)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            json.Serialize(o, sb);
            return sb.ToString();
        }
 
        /// <summary>
        /// 把DataTable对象转成json字符串
        /// </summary>
        public string ToJson(DataTable dt)
        {
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            ArrayList arrayList = new ArrayList();
            foreach (DataRow dataRow in dt.Rows)
            {
                Dictionary<string, object> dictionary = new Dictionary<string, object>();
                foreach (DataColumn dataColumn in dt.Columns)
                {
                    dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName]);
                }
                arrayList.Add(dictionary);
            }
            return javaScriptSerializer.Serialize(arrayList);
        }
    }
 
    public static class EnumerableExtension
    {
        /// <summary>
        /// 集合添加一个对象
        /// </summary>
        public static IEnumerable<T> Add<T>(this IEnumerable<T> e, T value)
        {
            foreach (var cur in e)
            { yield return cur; }
            yield return value;
        }
 
        /// <summary>
        /// 把集合转成DataTable
        /// </summary>
        public static DataTable ConvertToDataTable<T>(this IEnumerable<T> enumerable)
        {
            var dataTable = new DataTable();
            foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))
            {
                dataTable.Columns.Add(pd.Name, pd.PropertyType);
            }
            foreach (T item in enumerable)
            {
                var Row = dataTable.NewRow();
 
                foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                {
                    Row[dp.Name] = dp.GetValue(item);
                }
                dataTable.Rows.Add(Row);
            }
            return dataTable;
        }
    }
 }

fastjson json 字符串转 JSONObject 对象时 修改 key

fastjson json 字符串转 JSONObject 对象时 修改 key

 String  str="{sid:''no1'',sname:''kity'',age:11}";
      JSONObject jsonObject=JSONObject.parseObject(str);
      // 想让 JSONObject 中的 key sid=>id,sname->name
      System.out.println(jsonObject.toJSONString());

 

关于解析处理json字符串,修改对象key值修改json的key的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于ajax查询数据库,服务器传回json字符串,js解析json、C#处理Json字符串实例分析、C#对象转JSON字符串和JSON字符串转对象、fastjson json 字符串转 JSONObject 对象时 修改 key的相关知识,请在本站寻找。

本文标签:

上一篇flutter json数据解析(flutter jsondecode)

下一篇java注释转json插件开发实战(java 注释生成文档)