将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字符串转换为对象数组的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
JSONArray jsonary = (JSONArray) JSONObject.parse(s); 是啥意思
将 json 格式的键值对转换为以符号为键的 ruby 哈希的最佳方法是啥?
将 SymPy 矩阵转换为 numpy 数组/矩阵的最佳方法是啥