【问题标题】:Parse JSON array to Object array将 JSON 数组解析为 Object 数组
【发布时间】:2021-02-13 12:56:37
【问题描述】:

我知道这可能是一个非常微不足道的问题,但我似乎无法在网上找到答案..

假设我有一个下面的 JSON

{"userId" : "myUser","sites" : ["site1", "site2"] }

我想将它解析为 C# 对象 UserRestSharp 解析器无法正确解析数组。 我尝试如下实现sites

public string[] sites = new string[5];

public List<string> sites;

但似乎没有任何效果。

为了反序列化我使用

JsonDeserializer deserial = new JsonDeserializer();

User newUser = new User();

newUser = deserial.Deserialize<user>(response); --> 响应是一个 IRestResponse 对象。

代码正确解析了userId 等简单字符串,但在处理数组时遇到了困难……

我做错了什么? RestSharp 不是合适的工具吗?

如果是 Json 中的对象数组呢

{"userImgs" : {"small": "https://myImage.co.uk/small", "large" : "https://myImage.co.uk/large"}}

我是否可以只拥有一个对象作为属性的对象,如果我按如下方式实现我的类,解析器会处理吗?

Class User{

string userId;

UserImages userImg = new UserImages();

谢谢

【问题讨论】:

  • 我认为您基本上走在正确的轨道上,而且很可能是属性名称(站点)与 JSON 中的实际内容不匹配。您可以检查“IRestResponse”并查看实际的 json 是什么并包含它吗?
  • @DanielJamesBryars - 我基本上是使用 Postman 从 Json 复制粘贴我的属性。而且我还检查了名称以确保它们相同并且它们是......我很确定
  • 希望对您有所帮助:comment

标签: c# json restsharp jsonparser


【解决方案1】:

我会推荐使用 newtonsoft。

    using Newtonsoft.Json;
    class User
    {
        public string userId { get; set; }
        public List<string> sites { get; set; }
    }
    static void Main(string[] args)
    {
        string response = "{\"userId\" : \"myUser\",\"sites\" : [\"site1\", \"site2\"] }";
        User obj = JsonConvert.DeserializeObject<User>(response);
    }

【讨论】:

  • 是的,这很好,但我开始使用 RestSharp,我敢打赌有一种方法可以在不添加新库的情况下实现这一目标。
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2012-05-09
  • 2011-11-02
  • 1970-01-01
相关资源
最近更新 更多