gpt4 book ai didi

c# - 提取内部 JSON 对象进行单独解析

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:22 24 4
gpt4 key购买 nike

我正在尝试使用 DataContractJsonSerializer 在 Windows Phone 上解析一些 JSON。所有 JSON 响应都具有相同的格式:状态、消息、数据。状态和消息字段始终具有相同的类型,但数据字段包含特定于调用的对象。以下是一些示例:

哈希

{
status: 0,
message: "No error",
data:
{
team: "test",
startTime: "1969-12-31 19:00:00 -0500",
endTime: "2000-01-01 00:00:00 -0500",
max_photos: 30,
max_judged_photos: 24
}
}

列表

{
status: 0,
message: "No error",
data:
[
{
id: 1,
game_id: "Test",
description: "Test",
points: 100
},
{
id: 2,
game_id: "Test",
description: "Test",
points: 1000
}
]
}

我想将响应解析为包含状态、消息和数据的通用 Response 对象。然后我想进一步将数据中的 JSON 解析为正确的对象(哈希或列表)。这是我的 Response 类当前的样子:

[DataContract]
public class Response
{
[DataMember(Name = "status", IsRequired=true)]
public STATUS Status { get; set; }

[DataMember(Name = "message", IsRequired = true)]
public string Message { get; set; }

[DataMember(Name = "data", IsRequired = true)]
public ?????? Data { get; set; }
}

我的问题是,是否有一个通用的 JSON 容器可以用来在数据字段中保存内部 JSON(以便我可以单独解析),或者是否有更好的方法来解决这个问题?我不想为每种响应类型设置单独的 Response 类。

谢谢。

最佳答案

由于 data 有时是一个数组,有时是单个对象,您不能将其反序列化为类型安全的类。

但是你可以使用Json.Net (适用于 WP7)解析 json 字符串。

JObject json = (JObject)JsonConvert.DeserializeObject(jsonstr);
if (json["data"] is JArray)
{
foreach(var item in json["data"])
Console.WriteLine(item["id"]);
}else{
Console.WriteLine(json["data"]["startTime"]);
}

关于c# - 提取内部 JSON 对象进行单独解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com