将json字符串转换为对象数组的最佳方法是什么?

时间:2019-09-27 08:26:19

标签: c# json asp.net-mvc

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

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

P.S。我可以更改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"};

2 个答案:

答案 0 :(得分:3)

我建议通过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);

答案 1 :(得分:0)

您必须通过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数组