如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?
Posted
技术标签:
【中文标题】如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?【英文标题】:How do i create a model from a web api call in .Net core without knowing matching all the values in the returned json data? 【发布时间】:2021-10-27 16:00:02 【问题描述】:我是 .Net 框架的初学者,我想知道如何在不匹配 json 数据中所有参数的情况下返回模型。例如,我有一个未知的 json 进来,但我知道会有一个“名称”和“昵称”值,所以我想从这些值创建一个对象模型。
【问题讨论】:
这能回答你的问题吗? Deserialize JSON into C# dynamic object? 【参考方案1】:这是你的意思吗?
public class MyClass
public string key get; set;
public NameArray[] array get; set;
public class NameArray
public string Name get; set;
static void Main(string[] args)
string jsonString = "\"key\": \"myKey\", \"array\": [\"Name\": \"John\",\"Name\": \"Jack\"]";
var myClass = JsonSerializer.Deserialize<MyClass>(jsonString);
Console.WriteLine($"key: myClass.key");
Console.WriteLine($"name0: myClass.array[0].Name");
Console.WriteLine($"name1: myClass.array[1].Name");
【讨论】:
【参考方案2】:您需要一个具有您的值的类,这就是 JsonSerializer 将用来反序列化 json 字符串的类。
public class MyClass
public string Name get; set;
public string Nickname get; set;
static void Main(string[] args)
string jsonString = "\"firstName\": \"ABC\", \"lastName\": \"XYZ\", \"age\": 5, \"email\":\"abcxyz @blahblah.com\", \"Name\": \"ABC XYZ\", \"Nickname\": \"AZ\"";
var myClass = JsonSerializer.Deserialize<MyClass>(jsonString);
Console.WriteLine($"Name: myClass.Name");
Console.WriteLine($"Nickname: myClass.Nickname");
【讨论】:
我想要一些不需要 MyClass 的东西,因为每个条目都有太多的值来为它创建一个特定的类,我只想把我的值像 firstName 提供给其他地方。 您的问题表明您有一个包含许多字段的 json,但无论如何,该 json 字符串中都会有一个名称和昵称。我知道这些字段名称可能不同,但我的假设是您在 json 字符串中有一些已知部分。这就是代码提取的内容。如果字段 Name 和 Nickname 也是未知的,那么 Filburt 的评论可能是比我的更合适的答案。您是否希望反序列化一个您没有先验信息的 json 字符串,然后创建一个在编译时也是未知且未定义的结构或类? 其实你的答案非常接近我的需要。基本上 json 结果具有以下形式:key: value, array: [Name: "John", etc.., Name: "Jack"]。如果我想要 john 和 jack,我怎样才能在你的回答中效仿? 使成员成为一个数组。如果您有一个 json 字段... "SomeArray: [Name: "John", Name: "Jack"] 您需要有另一个类 SomeArray ,其中包含成员 Name 。然后 MyClass 将有 public SomeArray[] someArray而不是公共字符串名称。以上是关于如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]
如何在不指定键值的情况下获取 JSON 对象的最后一个元素?