我有以下JSON数组,它也可以为var数组中的某些元素保存空值。 var数组中的元素始终是固定的。
"vars": [
{
"varCol": [
{
"visible": false,
"val": 1,
},
{
"visible": false,
"val": 5,
},
{
"visible": false,
"val": 5,
},
null
],
"Type": "Type1"
"UniqueId": "ID1"
},
{
"varCol": [
{
"visible": true,
"val": 1,
},
null,
{
"visible": false,
"val": 5,
},
null
],
"Type": "Type2",
"UniqueId": "ID2"
}
]
我有以下C#反序列化程序类:
public class Var
{
public int VarId { get; set; }
public string Type { get; set; }
public List<VarCol> VarCols { get; set; }
}
public class VarCol
{
public int VarColId { get; set; }
public bool Visible { get; set; }
public float Val { get; set; }
}
我想要的输出是在VarCol中有一个条目,它始终保存数组中固定的值结构。在这种情况下,每个vars元素的varCol数组中有4个条目。 对于我正在使用的JSON的反序列化:
Var v = JToken.Parse(json_string).ToObject<Var>();
答案 0 :(得分:0)
我想将此作为评论插入,但它太长,所以我必须将其作为答案发布。
请注意逗号,因为您的JSON无效。我想你想要这样的东西:
{
"vars": [
{
"varCol": [
{
"visible": false,
"val": 1
},
{
"visible": false,
"val": 5
},
{
"visible": false,
"val": 5
},
null
],
"Type": "Type1",
"UniqueId": "ID1"
},
{
"varCol": [
{
"visible": true,
"val": 1
},
null,
{
"visible": false,
"val": 5
},
null
],
"Type": "Type2",
"UniqueId": "ID2"
}
]
}
度过愉快的一天,
阿尔贝托
答案 1 :(得分:0)
不确定你想要实现什么,因为JToken.Parse()处理null
值几乎与任何其他对象值一样,所以varCol
总是有4个元素。
以下是一些测试代码:http://dotnetfiddle.net/9gGdH9
答案 2 :(得分:0)
对不起,我的问题很容易引起误解。 我面临的问题是通过Entity Framework将数据保存到Var集合中的null VarCol。我需要这个才能知道集合中的哪些元素是null,因为我有一个固定大小的列表。我通过使用空VarCol实例化null VarCol来解决这个问题,正如Alex Skalozub在他的一条评论中指出的那样: / p>
这取决于对象在数据库中的存储方式。如果是VarCol 与Var有多对一的关系,EF可能存储引用 VarCol表中的Var记录。但无法保存空记录 数据库。这就是为什么回读只会带来那些记录的原因 得救了您可能需要在解析后进行一些后处理 在保存到DB之前,JSON用空记录替换空值。 - Alex Skalozub 5小时前