我需要一些帮助来映射没有键的 json 数组。例如:
[
"value1",
234,
3034,
"data",
[
"some value",
null,
2020
],
]
我根据收到的这些值创建了一个类,但我无法映射到类对象。我只能使用动态变量访问这些数据,例如:
dynamic object = DataFromJson();
var firstvalues = object[0]; // "value1"
我的json太大了,里面有很多数组,所以用索引访问是一个很大的过程。
有人知道如何访问这种数据并映射到类吗?
答案 0 :(得分:0)
我收到了很多关于这方面的反馈(谢谢!),所以这里是结论:
作为JSON数组,这种信息映射到类对象是不正确的。这不是功能性提案。
JArray 非常有助于在所有信息之间进行交互,然后将其带到一个类中。如果需要,您可以手动创建一个特定的方法来在您的类对象中包含每个值。
另一种选择是使用动态对象,作为索引访问。
确保不能以其他方式接收此信息,作为具有键和值的 JSON,并映射到类。
如果有一些有用的更新,我会在这里编辑。
答案 1 :(得分:0)
好吧,有一个选项可用,使用 Cinchoo ETL - 一个开源库,可以将此类数据加载到开箱即用的对象中。
定义对象如下
[ChoSourceType(typeof(object[]))]
[ChoTypeConverter(typeof(ChoArrayToObjectConverter))]
public class foo
{
[ChoArrayIndex(0)]
public long prop1 { get; set; }
[ChoArrayIndex(1)]
public double prop2 { get; set; }
}
然后解析JSON如下
string json = @"
[
[
1618170480000,
""59594.60000000"",
""59625.00000000"",
""59557.13000000""
],
[
1618170540000
]
]";
using (var r = ChoJSONReader<foo>.LoadText(json))
{
foreach (var rec in r)
Console.WriteLine(ChoUtility.Dump(rec));
}