欢迎莅临 SUN WU GANG 的园子!!!

世上无难事,只畏有心人。有心之人,即立志之坚午也,志坚则不畏事之不成。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Web.Script.Serialization;

namespace HS.Common.Helper
{
    public class JsonHelper
    {
        //定义一个用于保存静态变量的实例
        private static JsonHelper instance = null;
        //定义一个保证线程同步的标识
        private static readonly object locker = new object();
        //构造函数为私有,使外界不能创建该类的实例
        private JsonHelper() { }
        public static JsonHelper Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (locker)
                    {
                        if (instance == null) instance = new JsonHelper();
                    }
                }
                return instance;
            }
        }

        public string GetJsonValue(string json, string levelOne)
        {
            JObject jsonObj = JObject.Parse(json);

            return jsonObj.GetValue(levelOne).ToString();
        }

        public string GetJsonValue(string json, string levelOne, string levelTwo)
        {
            JObject jsonObj = JObject.Parse(json);

            return jsonObj[levelOne][levelTwo].ToString();
        }

        public string SetJsonValue(string json, string levelOne, string value="")
        {
            JObject jsonObj = JObject.Parse(json);
            jsonObj[levelOne] = value;
            return jsonObj.ToString();
        }

        public string SetJsonValue(string json, string levelOne, string levelTwo, string value="")
        {
            JObject jsonObj = JObject.Parse(json);
            jsonObj[levelOne][levelTwo] = value;
            return jsonObj.ToString();
        }

        /// <summary>
        /// 压缩转义
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public string CompressEscape(string json)
        {
            if (string.IsNullOrEmpty(json)) return string.Empty;
            return JsonConvert.SerializeObject(json);
        }

        /// <summary>
        /// 格式化json
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public string FormatJsonByStr(string json)
        {
            if (string.IsNullOrEmpty(json)) return string.Empty;
            Object jsonObject = JsonConvert.DeserializeObject(json);
            return JsonConvert.SerializeObject(jsonObject, Formatting.Indented);
        }

        /// <summary>
        /// 删除转义
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public string DelEscape(string json)
        {
            if (string.IsNullOrEmpty(json)) return string.Empty;
            // 将JSON字符串解析为C#对象
            return JsonConvert.DeserializeObject<object>(json).ToString();
        }

        public string StortJson(string json)
        {
            var dic = JsonConvert.DeserializeObject<SortedDictionary<string, object>>(json);
            SortedDictionary<string, object> keyValues = new SortedDictionary<string, object>(dic);
            keyValues.OrderBy(m => m.Key);//升序 把Key换成Value 就是对Value进行排序
                                          //keyValues.OrderByDescending(m => m.Key);//降序
            return JsonConvert.SerializeObject(keyValues);
        }

        /// <summary>
        /// 转换Dic 到Json
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        public string ConvertDicToJson(Dictionary<string, string> dic)
        {
            JObject json = new JObject();
            foreach (var item in dic.Keys)
            {
                json.Add(item, dic[item]);
            }
            return JsonConvert.SerializeObject(json, Formatting.Indented);
        }

        public string GetJson(object obj)
        {
            if (obj == null) return "";

            DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, obj);
                string szJson = Encoding.UTF8.GetString(stream.ToArray());
                return szJson;
            }
        }

        // 从一个对象信息生成Json串
        public string ObjectToJson(object obj)
        {
            return JsonConvert.SerializeObject(obj);
        }
        // 从一个Json串生成对象信息
        public object JsonToObject(string jsonString, object obj)
        {
            return JsonConvert.DeserializeObject(jsonString, obj.GetType());
        }

        public T Deserialize<T>(string json)
        {
            T obj = Activator.CreateInstance<T>();
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                return (T)serializer.ReadObject(ms);
            }
        }

        public List<T> JsonStringToList<T>(string jsonStr)
        {
            JavaScriptSerializer Serializer = new JavaScriptSerializer();
            List<T> objs = Serializer.Deserialize<List<T>>(jsonStr);
            return objs;
        }

        public bool IsValidJson(string strInput)
        {
            if (string.IsNullOrWhiteSpace(strInput)) { return false; }
            strInput = strInput.Trim();
            while (strInput.StartsWith(@"\") || strInput.StartsWith("'") || strInput.StartsWith("\""))
            {
                strInput = strInput.Substring(1);
            }
            while (strInput.EndsWith(@"\") || strInput.EndsWith("'") || strInput.EndsWith("\""))
            {
                strInput = strInput.Substring(0, strInput.Length - 1);
            }
            try
            {
                var obj = JsonConvert.DeserializeObject(strInput);
                return true;
            }
            catch
            {
                return false;
            }
        }




    }
}

部分接口应用示例:

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Demos
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnFormat_Click(object sender, EventArgs e)
        {
            string json = "{\"infcode\":\"0\",\"inf_refmsgid\":\"H61011600330202409180855405628\",\"recer_sys_code\":\"GXYTH \",\"refmsg_time\":\"20200730123541\",\"respond_time\":\"20200730123539\",\"err_msg\":\"\",\"warn_msg\":\"\",\"sign_no\":\"800600044\",\"output\":{\"orgCode\":\"1120\",\"orgName\":\"协议机构名称\",\"adm_time\":\"入院时间\",\"dscg_time\":\"出院日期\",\"dscg_trt_rslt\":\"出院原因\",\"diag_code\":\"出院诊断疾病编 码\",\"med_type\":\"11\",\"medfee_sumamt\":\"100\",\"setl_time\":\"20240912151515\",\"ipt_otp_no\":\"门诊/住院流水号\",\"medrcdno\":\"单据号\",\"inhosp_stas\":\"0\",\"msgid\":\"发送方报文 ID\"}}";

            JObject jsonObj = JObject.Parse(json);

            string str = GetJsonValue(json, "infcode");
            string str2 = GetJsonValue(json, "output", "dscg_time");

            this.txtJson.Text = str + str2;
            this.txtFormatJson.Text = SetJsonValue(json, "output", "dscg_time", "测试修改指定节点内容");
        }


        public string GetJsonValue(string json, string levelOne)
        {
            JObject jsonObj = JObject.Parse(json);

            return jsonObj.GetValue(levelOne).ToString();
        }

        public string GetJsonValue(string json, string levelOne, string levelTwo)
        {
            JObject jsonObj = JObject.Parse(json);

            return jsonObj[levelOne][levelTwo].ToString();
        }

        public string SetJsonValue(string json, string levelOne, string value="")
        {
            JObject jsonObj = JObject.Parse(json);
            jsonObj[levelOne] = value;
            return jsonObj.ToString();
        }

        public string SetJsonValue(string json, string levelOne, string levelTwo, string value="")
        {
            JObject jsonObj = JObject.Parse(json);
            jsonObj[levelOne][levelTwo] = value;
            return jsonObj.ToString();
        }



    }
}

补充信息:

/// <summary>
        /// 获取json指定属性值
        /// </summary>
        /// <param name="json">json信息</param>
        /// <param name="levelArr">层级|最多5级</param>
        /// <returns></returns>
        public string GetJsonValue(string json, params string[] levelArr)
        {
            string value = string.Empty;
            JObject jsonObj = JObject.Parse(json);
            if (levelArr.Length == 1) value = jsonObj.GetValue(levelArr[0]).ToString();
            if (levelArr.Length == 2) value = jsonObj[levelArr[0]][levelArr[1]].ToString();
            if (levelArr.Length == 3) value = jsonObj[levelArr[0]][levelArr[1]][levelArr[2]].ToString();
            if (levelArr.Length == 4) value = jsonObj[levelArr[0]][levelArr[1]][levelArr[2]][levelArr[3]].ToString();
            if (levelArr.Length == 5) value = jsonObj[levelArr[0]][levelArr[1]][levelArr[2]][levelArr[3]][levelArr[4]].ToString();
            return value;
        }

应用方式:

List<string> arr = new List<string>();
            arr.Add("output");
            arr.Add("ipt_otp_no");
            this.txtThree.Text = GetJsonValue(json,arr.ToArray());

  

posted on 2024-10-10 09:55  sunwugang  阅读(5)  评论(0编辑  收藏  举报