【发布时间】:2021-09-30 04:15:18
【问题描述】:
我有一个奇怪的 JSON 对象需要反序列化。
{
"data": {
"id": 123,
"permissions": {
"appName": {
"data": {
"1": {
"2021-08-01": {
"2020": {
"isAllowed": {}
}
}
}
}
}
}
}
}
我已经将其中的大部分内容与包装器和嵌套字典一起使用,但最后一部分没有按预期工作。如果我创建一个这样的类,它工作正常,但使用它很笨重。
public class DataWrapper<T>
{
public T Data { get; set;}
}
public class PermissionValues
{
public JToken IsAllowed { get; set; }
}
DataWrapper<Dictionary<int, Dictionary<DateTime, Dictionary<int, PermissionValues>>>>
我想将 JToken 更改为布尔值。当我这样做并添加一个 JsonConverter
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return true; //{} is true but JSON.net parses as null, old was: reader.Value != null;
}
我收到一个错误:
Newtonsoft.Json.JsonSerializationException: '无法转换字符串 'isAllowed' 到字典键类型'System.Int32'。创建一个 TypeConverter 从字符串转换为键类型对象。小路 'data.permissions.appName.data.1.2021-08-01.2020.isAllowed'
知道我错过了什么吗?
【问题讨论】:
-
isAllowed 在实际的 json 中有哪些值?
-
您是只对
isAllowed值感兴趣还是需要所有字段? -
如果以
{}存在则为true,否则为false -
是的,我需要整个对象。还有很多,这只是一个简化的sn-p
-
空括号{}是真的吗?没有价值..不应该是假的吗?如果你能在你的帖子中给出真假的例子会更好..因为评论不完全清楚