首页 > 编程语言 >C# Json操作

C# Json操作

时间:2024-10-10 09:48:39浏览次数:6  
标签:jsonObj return string C# json Json using 操作 public

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



    }
}

  

标签:jsonObj,return,string,C#,json,Json,using,操作,public
From: https://www.cnblogs.com/YYkun/p/18455686

相关文章

  • 使用C#和WCF创建并托管简单服务的指南
    在C#中,实现WindowsCommunicationFoundation(WCF)功能通常涉及几个关键步骤,包括定义服务契约、实现服务、配置服务以及托管服务。下面是一个简单的示例,展示如何使用C#和WCF来创建一个简单的服务。步骤1:创建服务契约首先,我们需要定义一个服务契约,这通常是通过接口来......
  • 【ClickHouse 表引擎&SQL操作&副本&分片集群 02】
    一、表引擎表引擎决定了如何存储表的数据。类似mysql的引擎InnoDB,MyISAM数据的存储方式和位置,写到哪里以及从哪里读取数据一般的引擎都存储在本地的磁盘,clickhouse存储的位置在:/var/lib/clickhouse -->其中data存储数据,metadata存储建表语句支持那些查询以及如何支持并......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛04
    前言T1签了。T2一眼后缀数组板子,但是复杂度是\(O(nq\log(n))\)的,极限数据本地\(4\)秒,但如果您会\(O(n)\)求后缀数组的话就直接过掉了,但赛时数据貌似纯随机,遂可以直接过掉,可以优化成\(O(n^2\log(n)+nq)\)或\(O(n^2\log(n)+q)\)的,赛时想打这个但是怕常熟大和上面区别......
  • 视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置
    EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力,在构建视频监控系统中展现出了独特的优势。EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP直播流,及RTMP、HTTP-FLV、HLS(......
  • P7394 「TOCO Round 1」History
    操作树加二分,目前题解区没有这种做法。发现操作一可逆,可以用操作树,操作三解决。操作一单点修改没什么好说的。接下来看操作二。令\(fa_{x,k}\)为\(x\)的\(k\)级祖先。发现对于每个询问中,如果\(y\)为奇数那么答案为\(0\)。如果\(y\)为偶数,那么答案就是\(fa_{x,y/2}......
  • 在 ASP.NET Core 中编写高性能 Web API 的4个小技巧
    WebAPI通常用来与外部模块进行通信、发送和接收数据,作为后端开发人员,应该把写出高性能的应用作为目标。下面4个技巧是我在编写WebAPI的小技巧。1、大量数据使用分页查询接口传输大量数据可能会导致严重的性能问题、过多的内存消耗和速度减慢。为了缓解这些可能的瓶颈,强......
  • docker常见命令
    Docker是一个常用的容器化工具,以下是一些常见的Docker命令:1.镜像管理列出本地镜像:dockerimages从DockerHub拉取镜像:dockerpull<image-name>构建镜像:dockerbuild-t<image-name>:<tag>.查看镜像详情:dockerinspect<image-id>删除镜像:dockerrmi<image-id......
  • 1day 未公开 金蝶 EAS 反序列化 RCE 漏洞
     0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用......
  • C++模版
    函数模版函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。 函数模版的格式如下:以swap函数模版实例化为例:注意:typename 是定义函数模版的关键字,可以用 class 替代。(但是不能用 struct  替代 class)函......
  • 如何在CentOS上安装istio
    Istio的安装需要在已经运行着Kubernetes的兼容版本的集群上进行。以下是Istio安装的详细步骤:一、环境准备操作系统:确保你的操作系统是CentOS7或更高版本。Kubernetes集群:需要有一个已经搭建好的Kubernetes集群。Istio的版本应与Kubernetes的版本兼容。例如,Istio1.8已经在Kub......