将Json对象转换为列表
本文关键字:列表 转换 对象 Json | 更新日期: 2023-09-27 18:04:22
我有这个Json字符串:
"UserProperties": [
{
"Id": "3", "values": [
{ "prop": "1" }
]
},
{
"Id": "4", "values": [
{ "prop": "1" },
{ "prop": "2" },
{ "prop": "3" }
]
}
]
我想把它转换成c#字符串和列表值,像这样:
public list<int> Id { get; set; }
public list<object> values { get; set; }
public int prop { get; set; }
这样我就可以操作我的值了:
foreach( int i in Id)
{
foreach( object val in values)
{
var str = i + '-' + val.prop;
}
}
到目前为止,我所做的是创建一个类,将包含那些Json字符串。我从一个非常相似的方法得到这段代码。
创建包装器类
class Wrapper { [JsonProperty("UserPropertiees")] public ValueSet valueSet { get; set; } } class ValueSet{ [JsonProperty("values")] public List<string> values {get;set;} public PropertySet propertySet { get; set; } } class PropertySet{ [JsonProperty("property")] public List<string> property {get;set;} }
我会使用Newtonsoft的Json。. NET并将JSON数组反序列化到List中。
http://www.newtonsoft.com/json/help/html/SerializingCollections.htm根据Rob Stewart的建议,NewtonSoft。在我看来,JSON是最好的方式。下面是一些你可以放入控制台应用程序的内容:
string json = @"{""UserProperties"": [
{
""Id"": ""3"", ""values"": [
{ ""prop1"": ""1"" }
]
},
{
""Id"": ""4"", ""values"": [
{ ""prop1"": ""1"" },
{ ""prop2"": ""2"" },
{ ""prop3"": ""3"" }
]
}
]}";
dynamic obj = JObject.Parse(json);
foreach (var o in obj.UserProperties)
{
Console.WriteLine(o.Id);
}
Console.ReadLine();
编辑
根据你的评论,这里有一个更完整的例子。试试这个:
dynamic obj = JObject.Parse(json);
foreach (var o in obj.UserProperties)
{
var sb = new StringBuilder();
sb.Append(o.Id);
sb.Append(":");
bool hasProps = false;
foreach (var value in o.values)
{
if (value.prop1 != null)
{
sb.Append(value.prop1);
sb.Append(',');
hasProps = true;
}
if (value.prop2 != null)
{
sb.Append(value.prop2);
sb.Append(',');
hasProps = true;
}
if (value.prop3 != null)
{
sb.Append(value.prop3);
sb.Append(',');
hasProps = true;
}
}
if (hasProps)
{
sb.Remove(sb.Length - 1, 1); // Remove trailing comma
}
Console.WriteLine(sb.ToString());
}
Console.ReadLine();