当前位置: 首页 > 知识库问答 >
问题:

C#JSON反序列化:如何从JSON对象数组中获取值[duplicate]

彭鸿哲
2023-03-14

我试图从一个.json数组创建一个数组,并且从当前的.json数组中只获取2个变量(keyName和token)。

{
  "project": [
   {
      "id": 1,
      "keyName": "John123",
      "age": "19",
      "token": "123456789"
    },
    {
      "id": 2,
      "keyName": "Mary123",
      "age": "13",
      "token": "23435"
    },
    {
      "id": 3,
      "keyName": "Harry123",
      "age": "23",
      "token": "2343542"
    }
  ] 
}

目前,我使用了一个api调用来获取.json文件,然后将其解析为一个数组,如下所示:

 Projects = JArray.Parse(resp.Content);

请帮忙,因为我是初学C#的,如果有些说不通的话,对不起,我的英语不是很好。

共有1个答案

古扬
2023-03-14
{
  "project": [
   {
      "id": 1,
      "keyName": "John123",
      "age": "19",
      "token": "123456789"
    },
    {
      "id": 2,
      "keyName": "Mary123",
      "age": "13",
      "token": "23435"
    },
    {
      "id": 3,
      "keyName": "Harry123",
      "age": "23",
      "token": "2343542"
    }
  ] 
}

您可以使用newtonsoft.json框架进行json操作,您可以从NuGet Package Manager安装该框架。然后使用所需的数据创建project模型。您可以使用jsondata类进一步抽象它,因此,如果您的json数据增长,您可以向它添加新的属性。之后,只需反序列化它。

public class Project
{
    public string KeyName { get; set; }
    public string Token { get; set; }
}

public class JSONData
{
    public List<Project> Projects { get; set; }
}

public class Deserializer
{
    //---------------- FIELDS -----------------
    private readonly string path = @"../../yourJsonFile.json";
    private readonly JSONData jsonData;
    
    //------------- CONSTRUCTORS --------------
    public Deserializer() {
        this.jsonData = JsonConvert.DeserializeObject<JSONData>(File.ReadAllText(this.path));
    }
}

这样就不会重复这样的反序列化代码

JsonConvert.DeserializeObject<List<Project>>(path);
JsonConvert.DeserializeObject<List<Category>>(path);
JsonConvert.DeserializeObject<List<Product>>(path);
 类似资料:
  • 我将用混合对象序列化/反序列化对象数组。因此,我创建了一个MyList类,并用字符串、int和date对象填充items数组。与jackson的连载效果很好。json字符串如下所示: 但是在反序列化时,json字符串date被解析为整数。因此,我创建了一个自己的类MyDate,将日期包装为字段名为“date”的json对象。新的结果是: 现在结果是LinkedHashMap。 以下是我的代码示例:

  • 我需要在PlayFramework中从Json创建object。 你们有什么建议吗? 谢谢!!

  • 问题内容: 这是我要在这里实现的目标: 从数据库获取文件名和ID的列表 在网络路径上搜索这些文件 存储未找到的文件的任何ID 在第二个数据库中搜索该ID 在网络路径上搜索这些文件 列出所有在两个位置均未找到文件的ID。 我遇到的问题是尝试使用我收集的结果中的文件名。 运行代码时,会显示从数据库收集的原始JSON数据,但是当尝试仅列出文件名时,我什么也没得到(甚至没有错误) 关于如何解决此问题并以一

  • 问题内容: 我对反序列化json对象几乎没有问题。我的json来自http网址: 我下载的JSON的屏幕 我不知道如何反序列化以动态创建按钮。我想出了如何用文本创建按钮,但是我不知道如何使用它们所具有的选项来创建按钮。我尝试在Windows Form应用程序中获取这些选项进行测试,但应用程序将崩溃。谢谢你的帮助。 问题答案: 您的课程应类似于: 然后,您应该可以使用Newtonsoft.Json反

  • 我对反序列化json对象没有什么问题。我的json来自超文本传输协议url: 我下载的JSON的屏幕 我不知道如何反序列化以动态创建按钮。我知道如何使用文本创建按钮,但我不知道如何使用它们拥有的选项制作它们。我尝试在Windows表单应用程序中获取这些选项进行测试,但应用程序会崩溃。谢谢您的帮助。

  • 问题内容: 我正在使用dart包json_serializable进行json序列化。查看flutter文档,它显示了如何反序列化单个对象,如下所示: 但是,我对dart不够熟悉,无法弄清楚如何对项目列表而不是单个实例执行相同的操作。 问题答案: 好吧,您的服务将处理作为地图的响应正文,或相应地处理地图列表。根据您所拥有的代码,您要核算1件商品。 如果响应主体是可迭代的,那么,如果我正确理解了您的