string JsonStr;
JObject obj = new JObject();
obj"sn" = "ABCDEF";
obj"machineNo" = "sddfgf";
obj"projectNo" = "sdvgfdbgf";
obj"testStation" = "IR/CR";
obj"testTime" = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
obj"testType" = 1;
obj"procType" = 3;
obj"machType" = 7;
obj"testDetails" = new JArray
{
new JObject
{
"itemResult" = true,
"testItem" = "阻值",
"testValue" = 100000
},
};
JArray details = (JArray)obj"testDetails";
obj"testResult" = details.All(item => (bool)item"itemResult");
//实际传输时使用
JsonStr = obj.ToString();
//打印到TextBox时使用
//JsonStr = obj.ToString(Newtonsoft.Json.Formatting.Indented);
Console.WriteLine("生成JSON:\n" + JsonStr);
//反学序列化解析
JObject jobj = JObject.Parse(JsonStr);
//必须使用动态类型。
dynamic data = jobj;
Type tokenType = data.sn.GetType();
Console.WriteLine($"【data.sn 本体对象类型】:{tokenType.FullName}");
// 2. 取出内部真实数据值,再打印原生数据类型
object realValue = data.sn.Value;
Console.WriteLine($"【JValue内部存储数据类型】:{realValue.GetType().FullName}");
// 3. 赋值给string变量后的类型(经过隐式转换)
string snStr = data.sn;
Console.WriteLine($"【赋值给string变量后的类型】:{snStr.GetType().FullName}");
}
C# 使用JObject创建Json比较方便 无需创建实体类。反序列化时借助dynamic