【问题标题】:What is best way to convert json string into array of objects? [duplicate]将json字符串转换为对象数组的最佳方法是什么? [复制]
【发布时间】:2019-09-27 08:26:19
【问题描述】:

MyClass 我有财产JsonArrayString。它是 json 对象的数组。

在 ASP.NET MVC Core 应用程序中将此字符串转换为 MyJsonObject 类数组的最佳方法是什么。

附注我可以改变json字符串的结构。

class MyClass {
     public string JsonArrayString => "[{"Value": "1", "Name": "One"}, ...]";
     public List<MyJsonObject> JsonArray => ...
}

public class MyJsonObject {
    string Value { get; set; }
    string Name { get; set; }
}

结果:

// First element of JsonArray => MyJsonObject() { Value = "1", "Name" = "One"};

【问题讨论】:

  • 阅读我的问题
  • ...的最佳方式 => 主要基于意见 => 题外话 - 请改写您的问题
  • 奇怪的是您的数据对象包含 json-strings。
  • @MateGvenetadze 阅读了问题的第一个答案。我觉得它是重复的:)
  • 这个JsonArrayString在哪里?为什么它是一个字符串,而不是这个字符串反序列化的直接结果?您是否有足够的权限访问缓存的字符串版本来证明它的存在?每次调用MyClass .JsonArray 时,我们真的需要对原始字符串进行反序列化吗?如果不更改字符串,我们将无法保留任何更改。

标签: c# json asp.net-mvc


【解决方案1】:

我建议通过 NuGet 包管理器安装 Newtonsoft.Json。然后用 JsonProperty 属性装饰 POCO 类的成员,以告诉序列化程序哪个属性与特定的 JSON 键匹配:

public class MyJsonObject
{
  [JsonProperty("Value")]
  string Value { get; set; }

  [JsonProperty("Name")]
  string Name { get; set; }
}

您可以将 JSON 反序列化为相应的对象实例:

var jsonString = "[{\"Value\": \"1\", \"Name\": \"One\"}, {\"Value\": \"2\", \"Name\": \"Two\"}]";
List<MyJsonObject> myJsonObjects = JsonConvert.DeserializeObject<List<MyJsonObject>>(jsonString);

【讨论】:

    【解决方案2】:

    您必须通过 NuGet 包管理器添加 Newtonsoft.Json。

    public class MyClass
    {
        public string JsonArrayString => "[{\"Value\": \"1\", \"Name\": \"One\"}, {\"Value\": \"2\", \"Name\": \"Two\"}]";
        public List<MyJsonObject> JsonArray => JsonConvert.DeserializeObject<List<MyJsonObject>>(JsonArrayString);
    }
    
    public class MyJsonObject
    {
        [JsonProperty("Value")]
        string Value { get; set; }
        [JsonProperty("Name")]
        string Name { get; set; }
    }
    
    class Program
    {
    
        static void Main(string[] args)
        {
            var myClass = new MyClass();
        }
    }
    

    您可以使用 myClass.JsonArray 访问 json 数组

    【讨论】:

      猜你喜欢
      • 2017-06-09
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多