【发布时间】:2014-12-20 12:50:07
【问题描述】:
我有这样的 JSON 数据...
{
"generated" : "Sat, 20 Dec 3049 12:30:01",
"1" : { ... },
"2" : { ... },
...
"2400" : { ... },
}
就个人而言,我希望使用 JSON 数组语法输出一个对象数组(这是我第一次尝试使用 JSON)。我正在使用 Json.Net 尝试将这种混乱解析为对象模型以进行查询并最终显示。
我打算使用 JsonSerializationAttribute 方法将 JSON 转换为对象模型。我已经尝试直接使用 XML,但显然这个特定的 JSON 文件与 XML 不兼容(“1”是无效的 XML 元素名称)。
我的初始对象模型类代表上面JSON的高级sn-p如下:
public class MwoMapData
{
[JsonProperty(PropertyName = "generated")]
public DateTime Generated { get; set; }
[JsonArray]
public List<Planet> Planets { get; set; }
}
我读过的资源基本上说数组并没有像现在这样表示,我完全不知道如何用Json.Net 将它解析到我的对象模型中。
我的问题是:如何使用Json.Net 和JsonSerializationAttributes 将对象属性转换为数组?
【问题讨论】:
-
数组在哪里?有带字段的 JSON 对象,但没有数组
-
在 Java 中,我曾与 Jackson (mkyong.com/java/how-to-convert-java-object-to-from-json-jackson) 合作,以便将 JSON 传递给对象。它允许您根据需要获取 JSON(例如,作为地图)。
-
@Sergey:“字段”是项目的动态列表,显然是所引用对象的 ID。例如,为什么有人会序列化名称为“1”的属性,尤其是在存在数组语法的情况下?这显然是一个大型数据集,而不是具有属性的实际对象。
-
@Marc:不相关,我正在使用 C#,问题是如何将这些属性反序列化为数组。
-
@toadflakz 例如,为什么有人会序列化名称为“1”的属性,尤其是当数组语法存在时? JSON 具有数组语法,而您的 JSON 是不使用它。如果您的反序列化程序仅仅因为它具有数字属性名称(尤其是当它具有非数字属性名称时)就假设它是一个数组,那将是相当冒昧的。