weixin_45988163
2021-09-08 14:25
采纳率: 0%
浏览 58

C# 解析json 为对象


call: reportQuery / GetReportData
result: {
    "ReportName": "GL_BalanceSumRpt",
    "DataSource": {
        "Rows": [{
            "accountTypeName": "资产",
            "accountTypeID": "6",
            "accountCode": "1001",
            "accountID": "1",
            "accountName": "库存现金",
            "currencyID": "4",
            "[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountDr-借方]": "10017.00",
            "[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountCr-贷方]": "",
            "GroupLevel": "0",
            "rowType": "D",
            "reportRowType": "1"
        }]
    }
}
这个json对象有中文文字  我该怎么解析
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • CSDN专家-showbo 2021-09-08 15:07

    Row字段包含特殊字符不能当做实体类属性,可以考虑用dictionary来替代,但是没有类那么方便调用属性和有ide提示了,示例代码如下

    有帮助或启发麻烦点个采纳【本回答右上角】,谢谢~~

    img

    using System;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var s = @"{call: ""reportQuery / GetReportData"",
    result: {
        ""ReportName"": ""GL_BalanceSumRpt"",
        ""DataSource"": {
            ""Rows"": [{
                ""accountTypeName"": ""资产"",
                ""accountTypeID"": ""6"",
                ""accountCode"": ""1001"",
                ""accountID"": ""1"",
                ""accountName"": ""库存现金"",
                ""currencyID"": ""4"",
                ""[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountDr-借方]"": ""10017.00"",
                ""[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountCr-贷方]"": """",
                ""GroupLevel"": ""0"",
                ""rowType"": ""D"",
                ""reportRowType"": ""1""
            }]
        }
    }";
                var obj = new { call = string.Empty, result = new { ReportName = string.Empty, DataSource = new { Rows = new List<Dictionary<string, string>> () } } };
    
                var o = JsonConvert.DeserializeAnonymousType(s, obj);
    
                foreach (var item in o.result.DataSource.Rows)
                {
                    Console.WriteLine("[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountDr-借方]:" + item["[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountDr-借方]"]); 
                    Console.WriteLine("[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountCr-贷方]:" + item["[PeriodEndBalance-期末余额][periodEndBalanceOrigAmountCr-贷方]"]); 
                }
    
                Console.ReadKey();
            }
        }
    }
    
    
    
    评论
    解决 2 无用
    打赏 举报
  • CSDN专家-文盲老顾 2021-09-08 14:35

    直接解析啊,直接使用第三方类库 Newtonsoft.Json.dll,序列化即可

    评论
    解决 无用 1
    打赏 举报
  • 於黾 2021-09-08 14:36

    这跟中文有一毛钱关系吗,好像没有中文你就会解析了一样

    评论
    解决 无用 1
    打赏 举报

相关推荐 更多相似问题