JsonObjectModel.cs
上传用户:xhd1221
上传日期:2022-05-28
资源大小:186k
文件大小:3k
源码类别:

外挂编程

开发平台:

C/C++

  1. using System.Collections.Generic;
  2. using System.Text;
  3. using System;
  4. namespace Json
  5. {
  6.     public class JsonObjectModel
  7.     {
  8.         protected string _GetKey(string rawjson)
  9.         {
  10.             if (string.IsNullOrEmpty(rawjson))
  11.                 return rawjson;
  12.             rawjson = rawjson.Trim();
  13.             string[] jsons = rawjson.Split(new char[] { ':' });
  14.             if (jsons.Length < 2)
  15.                 return rawjson;
  16.             return jsons[0].Replace(""", "").Trim();
  17.         }
  18.         protected string _GetValue(string rawjson)
  19.         {
  20.             if (string.IsNullOrEmpty(rawjson))
  21.                 return rawjson;
  22.             rawjson = rawjson.Trim();
  23.             string[] jsons = rawjson.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
  24.             if (jsons.Length < 2)
  25.                 return rawjson;
  26.             StringBuilder builder = new StringBuilder();
  27.             for (int i = 1; i < jsons.Length; i++)
  28.             {
  29.                 builder.Append(jsons[i]);
  30.                 builder.Append(":");
  31.             }
  32.             if (builder.Length > 0)
  33.                 builder.Remove(builder.Length - 1, 1);
  34.             string value = builder.ToString();
  35.             if (value.StartsWith("""))
  36.                 value = value.Substring(1);
  37.             if (value.EndsWith("""))
  38.                 value = value.Substring(0, value.Length - 1);
  39.             return value;
  40.         }
  41.         protected List<string> _GetCollection(string rawjson)
  42.         {
  43.             //[{},{}] 
  44.             List<string> list = new List<string>();
  45.             if (string.IsNullOrEmpty(rawjson))
  46.                 return list;
  47.             rawjson = rawjson.Trim();
  48.             StringBuilder builder = new StringBuilder();
  49.             int nestlevel = -1;
  50.             int mnestlevel = -1;
  51.             bool strlevel =false;
  52.             for (int i = 0; i < rawjson.Length; i++)
  53.             {
  54.                 char jsonchar = rawjson[i];
  55.                 if (i == 0)
  56.                     continue;
  57.                 else if (i == rawjson.Length - 1)
  58.                 {
  59.                     if (jsonchar == '}' || jsonchar == ']')
  60.                         continue;
  61.                 }
  62.                 if (jsonchar == '{')
  63.                 {
  64.                     nestlevel++;
  65.                 }
  66.                 if (jsonchar == '}')
  67.                 {
  68.                     nestlevel--;
  69.                 }
  70.                 if (jsonchar == '[')
  71.                 {
  72.                     mnestlevel++;
  73.                 }
  74.                 if (jsonchar == ']')
  75.                 {
  76.                     mnestlevel--;
  77.                 }
  78.                 if (jsonchar == '"') strlevel = (!strlevel);
  79.                 if (jsonchar == ',' && nestlevel == -1 && mnestlevel == -1 && !strlevel)
  80.                 {
  81.                     list.Add(builder.ToString());
  82.                     builder = new StringBuilder();
  83.                 }
  84.                 else
  85.                 {
  86.                     builder.Append(jsonchar);
  87.                 }
  88.             }
  89.             if (builder.Length > 0)
  90.                 list.Add(builder.ToString());
  91.             return list;
  92.         }
  93.     }
  94. }