C# 接口参数接收未知类型数据

Cnraise 2024-09-10 10:16:29

webapi 接口调用,参数不一样但是共同调用同一个接口

参数:第一种

{
"Parameter": "ProductInfo", 
"Data": 
[
{
"Code":"001",
"Desc":"设备",

},
{
"Code":"002",
"Desc":"机器",
}
]
}

 

第二种

 

{
"Parameter": "ProductInfo", 
"Data": 
[
{
"Order":"25Q9",
"ID":"1",

},
{
"Order":"25Q10",
"ID":"2",
}
]
}

传递参数的类应该怎么定义呢 才能接收任何类型的值 

...全文
126 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1

泛型,意味着类型不可预料,这在转换时是做不到的。
换个思路就可以了。


using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace ConsoleApp8
{
    class Program
    {
        static void Main(string[] args)
        {
            string json1 = 
@"{
    ""Parameter"": ""ProductInfo"",
    ""Data"": [{
        ""Code"": ""001"",
        ""Desc"": ""设备""

    }, {
        ""Code"": ""002"",
        ""Desc"": ""机器""
    }]
}";
            string json2 = 
@"{
    ""Parameter"": ""ProductInfo"",
    ""Data"": [{
        ""Order"": ""25Q9"",
        ""ID"": ""1""

    }, {
        ""Order"": ""25Q10"",
        ""ID"": ""2""
    }]
}";
            var r1 = JsonConvert.DeserializeObject<R>(json1);
            var r2 = JsonConvert.DeserializeObject<R>(json2);
            if (r1 != null)
            {
                Console.WriteLine("json1反序列化成功");
                Console.WriteLine(JsonConvert.SerializeObject(r1));
            }
            if (r2 != null)
            {
                Console.WriteLine("json2反序列化成功");
                Console.WriteLine(JsonConvert.SerializeObject(r2));
            }
            Console.Read();
        }
    }

    public class R
    {
        public string Parameter { get; set; }

        public List<Dictionary<string,string>> Data { get; set; }
    }
}

img

110,915

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧