<返主目录 ▕▏C#基础库 WjwLibs: V5.0.5▕▏帮助文档 : C#动态对象树类型 ▕▏ 编译日期: 2024-01-24▕▏ Email: wujwmail@163.com

〖C#动态对象树类型〗 /wjw_cs.net/WjwLibs/wjw/WjwObject.cs


类-1.名称: WjwObject ▕→ 处理C#动态对象树类型类:

命名空间: WjwLibs
所属类: WjwLibs.WjwObject
说明: 
    处理C#动态对象树类型类:
   json[反]系列化,php-serialize[反]系列化(php程序员的利器),xml[反]系列化
   输入:
      由C#对象构造: WjwObject warr = new WjwObject(jobj);
      由json串构造: WjwObject warr = new WjwObject(jstr);
      由xml串构造:  WjwObject warr = new WjwObject(xstr);
      由php系列串输入: WjwObject warr = new WjwObject(phpStr);
   输出:
     输出本对象: dynamic obj=warr.JData;
     输出json串: string json_str=warr.ToString();
     输出xml串:  string xml_str=warr.ToXml().ToString();
     输出php系列串: string php_str=warr.ToPhp_Serialize(false);
   用对象名查询:
       var any = warr["对象名1","对象名2","对象名3",...];//等同:warr["对象名1"]["对象名2]["对象名3...]
   子对象树的斌值与创建:
       warr["对象名1","对象名2","对象名3",...]=any; //当对象不存在时则创建,相当于js object.assign
   示例:
      using Newtonsoft.Json.Linq;
      using WjwLibs;
      ......
      JObject jobj = JObject.Parse(@"{
                   'Stores': [
                      'Lambton Quay',
                      'Willis Street'
                    ],
                    'Manufacturers': [
                      {
                        'Name': 'Acme Co',
                        'Products': [
                          {
                            'Name': 'Anvil',
                            'Price': 50
                           }
                        ]
                      },
                      {
                        'Name': 'Contoso',
                        'Products': [
                          {
                            'Name': 'Elbow Grease',
                            'Price': 99.95
                          },
                          {
                            'Name': 'Headlight Fluid',
                            'Price': 4
                           }
                         ]
                       }
                    ]
                  }
              ");
          WjwObject arr = new WjwObject(jobj);
          arr["Manufacturers",1, "new_name"] = "abc";
          WjwPhp.print(arr);
          WjwPhp.print(arr["Manufacturers", 1, "Products", 1, "Price"]);
          WjwPhp.print(arr.ToPhp_Serialize(false));
定义: 
    public class WjwObject

属性名称: JData ▕→ 当前数据实例对象

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     当前数据实例对象
 定义: 
     public JToken JData { get; set; } = new JObject();

属性名称: Cursor ▕→ 当前结点对象指针

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     当前结点对象指针
 定义: 
     public object Cursor { get; set; } = null;

方法名称: WjwObject ▕→ 构造器

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     构造器
 参数: 
     obj : 初始数据:
         1. json字串
         2. xml字串
         3. C#对象
         4. php的serialize系列化字串
 定义: 
     public WjwObject(object obj = null)

方法名称: ToString ▕→ 输出格式化的json字串

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     输出格式化的json字串
 返回: 
 定义: 
     public override string ToString()

方法名称: ToString ▕→ 输出格式化的json字串

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     输出格式化的json字串
 参数: 
     isExp : 是否为友好格式
 返回: 
 定义: 
     public string ToString(bool isExp)

方法名称: ToXml ▕→ 输出为XML(WjwE4x)对象

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     输出为XML(WjwE4x)对象
    可转为: XmlDocument xdoc = (XmlDocument)this.ToXml();
            strnig xstr=this.ToXml().ToString();
 参数: 
     root_name : 根名称,用缺省值root自动判断非树结构时加根结点
 返回: 
     WjwE4x
 定义: 
     public WjwE4x ToXml(string root_name="root")

属性名称: this[params object[] keys] ▕→ 查询(创建)子对象

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     查询(创建)子对象
 参数: 
     keys : 键名序列(字符串或整数)
 返回: 
 定义: 
     public dynamic this[params object[] keys]

方法名称: ToPhp_Serialize ▕→ 输出php系列化字符串

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     输出php系列化字符串
 参数: 
     to_stdClass : 系列化为php的stdClass或为Array
 返回: 
     php系列化字符串
 定义: 
     public string ToPhp_Serialize(bool to_stdClass = true)

方法名称: FromPhp_Serialize ▕→ 从php系列化字符串创造

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     从php系列化字符串创造
 参数: 
     serialize_str : php系列化字符串
 定义: 
     public void FromPhp_Serialize(string serialize_str)

方法名称: FormPhpArray ▕→ 从类PHP的关联数组对象输入转为常规对象

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     从类PHP的关联数组对象输入转为常规对象
 参数: 
     jobj : 动态对象,为null时转自身
 定义: 
     public void FormPhpArray(dynamic jobj =null)

方法名称: ToPhpArray ▕→ 转为类PHP的关联数组对象并输出

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     转为类PHP的关联数组对象并输出
     格式说明:
       类PHP关联数组:
     "Stores": {
         "0": "Lambton Quay",
         "1": "Willis Street"
     }
       常规对象:
     "Stores": [ "Lambton Quay", "Willis Street"]
 返回: 
     动态对象
 定义: 
     public dynamic ToPhpArray()

方法名称: ToJArray ▕→ 转对象为JArray

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     转对象为JArray
    例如:
        Tuple<int, string> tuple = new Tuple<int, string>(1, "aa");
        WjwPhp.print(WjwObject.ToJArray(tuple).ToString());
 返回: 
     JArray
 定义: 
     public static JArray ToJArray(object obj)

方法名称: Assign ▕→ 合并对象:

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     合并对象:
     结果为类php关联数组对象,可用FromPhpArray()转为常规格式
 参数: 
     oArge0 : 对象0
     oArges : 对象1-n
 返回: 
     合并后的WjwObject
 定义: 
     public static WjwObject Assign(Object oArge0, params Object[] oArges)

方法名称: JArray2JObject ▕→ JArray转JObject

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     JArray转JObject
    用对象数字序列键("0","1","2","n")来表示数组
 参数: 
     jarr : JArray
 返回: 
     JObject
 定义: 
     public static JObject JArray2JObject(JArray jarr)

方法名称: JObject2JArray ▕→ JObject2JArray

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     JObject2JArray
       从对象数字序列键("0","1","2","n")中提取
 参数: 
     jobj : JObject
 返回: 
     JArray
 定义: 
     public static JArray JObject2JArray(JObject jobj)

方法名称: EachCB ▕→ 对象树遍历

 命名空间: WjwLibs
 所属类: WjwLibs.WjwObject
 说明: 
     对象树遍历
 参数: 
     node : 起始结点
     cb : 回调函数:(定义如下)
         bool cb(node,level){}
         node:  当前的元素结点
         level: 当前结点的层深度(从1计)
         返回: false时结束循环
     level : 层深度初值
 返回: 
     完成true/中断退出fale
 定义: 
     public static bool EachCB(JToken node, Func<JToken, int, bool> cb, int level = 0)