C#封装仿Java式解析JSON

原创 2018年04月17日 15:03:51

最近写了C#代码,然而C#操作json的方式实在是不习惯,于是就模仿Java解析json的写法做了一层封装。
引用库:Newtonsoft.Json

JSONObject:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JSONPackaging {
    public class JSONObject {

        private JObject jObject;

        private JSONObject(JObject jObject) {
            this.jObject = jObject;
        }

        public JSONObject() {
            this.jObject = new JObject();
        }

        public static JSONObject StringParseJSON(string str) {
            JObject jo = JsonConvert.DeserializeObject(str) as JObject;
            JSONObject j = new JSONObject(jo);
            return j;
        }

        public string GetString(string key) {
            return (string)jObject[key];
        }

        public int GetInt(string key) {
            return (int)jObject[key];
        }

        public void Put(string key,string value) {
            CheckJobject();
            jObject[key] = value;

        }

        private void CheckJobject() {
            if(jObject == null) {
                jObject = new JObject();
            }
        }

        private string WipeOffCarriageReturn(string str) {
            return str.Replace("\r", "").Replace("\n", "").Replace(" ", "");
        }

        public void Put(string key,int value) {
            CheckJobject();
            jObject[key] = value;
        }

        public void Put(string key,JSONArray jsonArray) {
            jObject[key] = JArray.Parse(jsonArray.ToString());
        }

        public override string ToString() {
            string str = jObject.ToString();
            return WipeOffCarriageReturn(str).Trim();
        }

        public JSONArray GetJsonArray(string key) {
            return JSONArray.Parse(jObject[key].ToString());
        }

    }
}

JSONArray:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JSONPackaging {
    public class JSONArray {

        private JArray jArray;
        public int Count { get; private set; }

        public JSONArray() {
            this.jArray = new JArray();
        }

        private JSONArray(JArray j) {
            this.jArray = j;
        }

        public static JSONArray Parse(string str) {
            JArray jrr = JArray.Parse(str);
            JSONArray j = new JSONArray(jrr);
            j.Count = jrr.Count;
            return j;
        }

        public JSONObject GetIndex(int i) {
            return JSONObject.StringParseJSON(jArray[i].ToString());
        }

        public void Add(JSONObject jsonObject) {
            this.jArray.Add((JObject)JsonConvert.DeserializeObject(jsonObject.ToString()));
            Count = jArray.Count;
        }

        public void Clear() {
            this.jArray.Clear();
        }

        private string WipeOffCarriageReturn(string str) {
            return str.Replace("\r", "").Replace("\n", "").Replace(" ", "");
        }

        public override string ToString() {
            string str = jArray.ToString();
            return WipeOffCarriageReturn(str).Trim();
        }

    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guanzhengyinqin/article/details/79975004

用C#实现封装

本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。
  • 2017年07月23日 16:27

C#关于json字符串解析的封装

本文的目标是实现C#语言对json字符串解析的封装,使用到的动态链接库是:Newtonsoft.Json。 下面叙述封装的过程: 1.首先是构造Json解析对象JsonDecode: ...
  • xiaozhonghuaa
  • xiaozhonghuaa
  • 2015-06-17 20:00:49
  • 1111

C#封装和解析json

  • 2015年08月19日 16:17
  • 82KB
  • 下载

JAVA_Gson解析json工具类封装

package com.springSecurity.gson; import java.util.ArrayList; import java.util.List; import java.ut...
  • jwiang
  • jwiang
  • 2016-10-17 11:20:07
  • 4644

解析Json和封装Json

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Mo...
  • u013089389
  • u013089389
  • 2014-01-17 16:21:35
  • 884

C# 自定义Json解析工具

需求需求内容还是上一篇公司那个java转C#的需求,其中socket是json格式的。需求中的这个json需要能够动态增删json数据中的元素:每条数据的key和value都是动态定义的,解析出来才知...
  • ylbs110
  • ylbs110
  • 2016-04-29 11:13:43
  • 1193

java解析json数据(前台json数据封装后台springmvc解析)

业务:前台ajax传递json对象形式,json对象数组形式数据,传递后台,解析json数据开发环境:eclipse4.5+mave3.3+mysql5.7+tomcat7+jdk1.7开发技术:sp...
  • u014079773
  • u014079773
  • 2017-09-12 12:46:23
  • 1305

仿大街网-堆栈式卡片布局-SwipeCardLayout

仿大街网-堆栈式卡片布局-SwipeCardLayout
  • u014608640
  • u014608640
  • 2016-10-19 18:26:07
  • 594

模仿outlook快捷方式栏的一个控件(C#)

这是一个用c#写的控件,它的原型是outlook 2000里面左侧的快捷方式栏,类似的控件也会在QQ,Visio等常用软件中找到,我为这个控件写了一个dll,并且做了一个demo演示它。如下图所示:我...
  • hoodlum1980
  • hoodlum1980
  • 2008-02-28 23:56:00
  • 1917
收藏助手
不良信息举报
您举报文章:C#封装仿Java式解析JSON
举报原因:
原因补充:

(最多只允许输入30个字)