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");
  • 相关阅读:
    HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
    送别2019,期待2020!
    [系列] Go
    当查询的数据来自多个数据源,有哪些好的分页策略?
    究竟什么样的开发流程是规范的?
    Git 分支设计规范
    API 接口设计规范
    一线技术管理者究竟在管什么事?
    一个人被提拔,不仅仅是能力,而是信任
    [系列] Go 如何解析 JSON 数据?
  • 原文地址:https://www.cnblogs.com/zhyue93/p/json_dynamic_1.html
Copyright © 2011-2022 走看看