<返主目录 ▕▏ C#基础库 WjwLibs: V5.0.5▕▏帮助文档 : C#动态对象树类型 ▕▏ 编译日期: 2024-09-17▕▏ Email: wujwmail@163.com
命名空间: 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)