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");
  • 相关阅读:
    Merge into使用详解( 同时执行inserts和updates操作 )
    sql执行计划解析案例(二)
    包的定义和导入-----package
    jQuery练习实例(四)
    打印沙漏形
    Java的RandomAccessFile
    农场有头大母牛,每年生头小母牛,小母牛五年后生小母牛,问20年后农场一共有多少头牛?(用面向对象的思想)
    关于编译Lambda时报告返回的为void的错误
    银行对账
    mysql查询随机几条数据(速度快)
  • 原文地址:https://www.cnblogs.com/zhyue93/p/json_dynamic_1.html
Copyright © 2011-2022 走看看