zoukankan      html  css  js  c++  java
  • C# Newtonsoft.Json反序列化为dynamic对象之后的使用

    通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错

    源代码:

    namespace ConsoleApplication1
    {
    
        class Program
        {
            static void Main()
            {
                var data = "{"C_Describe":"测试","FY_Subtitle":"测试","MAX_ZJ":20000,"HType":"WFB","communityID":"28075",
                  "FY_id":110352,"areaID":11,"IsPublisher":"0","attURL":""}
    "; dynamic jsonData = FromJson<dynamic>(data); if (ContainChinese(jsonData.FY_Subtitle_CN)) Console.WriteLine("1"); if (ContainChinese((dynamic)jsonData.FY_Subtitle)) Console.WriteLine("2"); Console.ReadKey(); } /// <summary> /// 判断是否包含中文 /// </summary> /// <param name="CString"></param> /// <returns></returns> public static bool ContainChinese(string CString) { return Regex.IsMatch(CString??"", @"[u4e00-u9fbb]"); } /// <summary> /// 将json字符串反序列化为dynamic类型 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jsonText"></param> /// <returns></returns> public static T FromJson<T>(string jsonText) { var json = new JsonSerializer { NullValueHandling = NullValueHandling.Ignore, ObjectCreationHandling = ObjectCreationHandling.Replace, MissingMemberHandling = MissingMemberHandling.Ignore, ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; var sr = new StringReader(jsonText); var reader = new JsonTextReader(sr); var result = (T)json.Deserialize(reader, typeof(T)); reader.Close(); return result; } } }

    解决方法

    在调用通过json反序列化的dynamic对象时,要先强制转换为对应的类型

    代码:

    if (ContainChinese((jsonData.FY_Subtitle_CN ?? "").ToString()))
        Console.WriteLine("1");
    if (ContainChinese((jsonData.FY_Subtitle ?? "").ToString()))
        Console.WriteLine("2");
  • 相关阅读:
    falsk简单项目示例
    bootstrap基础
    flask models循环使用和migrate迁移脚本
    flask-script
    flask 钩子函数
    flask get和post请求使用
    flask SQLALchemy外键及约束
    flask SQLAlchemy
    关于虚拟机端口转发的一次理解和记录
    记录一次VMware与xshell远程链接的总结
  • 原文地址:https://www.cnblogs.com/zhyue93/p/json_dynamic_1.html
Copyright © 2011-2022 走看看