将json字符串转换为对象数组的最佳方法是啥? [复制]

Posted

技术标签:

【中文标题】将json字符串转换为对象数组的最佳方法是啥? [复制]【英文标题】: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 时,我们真的需要对原始字符串进行反序列化吗?如果不更改字符串,我们将无法保留任何更改。 【参考方案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 数组

【讨论】:

以上是关于将json字符串转换为对象数组的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中将字符串转换为对象数组的最佳方法?

JSONArray jsonary = (JSONArray) JSONObject.parse(s); 是啥意思

将 json 格式的键值对转换为以符号为键的 ruby​​ 哈希的最佳方法是啥?

将 SymPy 矩阵转换为 numpy 数组/矩阵的最佳方法是啥

在没有第三方库的情况下从 JSON 获取动态对象的最佳方法是啥?

将对象的所有键转换为小写的最佳方法(最有效)是啥?