[backend/federation] Improve parsing of ASCollection & ASOrderedCollection
This commit is contained in:
parent
e59526592c
commit
8c20be0d95
2 changed files with 48 additions and 16 deletions
|
@ -58,9 +58,18 @@ public sealed class ASCollectionConverter : JsonConverter
|
||||||
if (reader.TokenType == JsonToken.StartArray)
|
if (reader.TokenType == JsonToken.StartArray)
|
||||||
{
|
{
|
||||||
var obj = JArray.Load(reader);
|
var obj = JArray.Load(reader);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
||||||
if (valueList is { Count: > 0 })
|
if (valueList is { Count: > 0 })
|
||||||
return VC.HandleObject(valueList[0], objectType);
|
return VC.HandleObject(valueList[0], objectType);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
|
|
||||||
var list = obj.ToObject<List<ASCollection?>>();
|
var list = obj.ToObject<List<ASCollection?>>();
|
||||||
return list == null || list.Count == 0 ? null : list[0];
|
return list == null || list.Count == 0 ? null : list[0];
|
||||||
}
|
}
|
||||||
|
@ -68,8 +77,18 @@ public sealed class ASCollectionConverter : JsonConverter
|
||||||
if (reader.TokenType == JsonToken.StartObject)
|
if (reader.TokenType == JsonToken.StartObject)
|
||||||
{
|
{
|
||||||
var obj = JObject.Load(reader);
|
var obj = JObject.Load(reader);
|
||||||
|
try
|
||||||
|
{
|
||||||
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
||||||
return valueObj != null ? VC.HandleObject(valueObj, objectType) : obj.ToObject<ASCollection?>();
|
if (valueObj != null)
|
||||||
|
return VC.HandleObject(valueObj, objectType);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj.ToObject<ASCollection?>();
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -62,9 +62,17 @@ public sealed class ASOrderedCollectionConverter : JsonConverter
|
||||||
if (reader.TokenType == JsonToken.StartArray)
|
if (reader.TokenType == JsonToken.StartArray)
|
||||||
{
|
{
|
||||||
var obj = JArray.Load(reader);
|
var obj = JArray.Load(reader);
|
||||||
|
try
|
||||||
|
{
|
||||||
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
||||||
if (valueList?.Any(p => p.Value != null) ?? false)
|
if (valueList?.Any(p => p.Value != null) ?? false)
|
||||||
return ValueObjectConverter.HandleObject(valueList[0], objectType);
|
return ValueObjectConverter.HandleObject(valueList[0], objectType);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
//ignored
|
||||||
|
}
|
||||||
|
|
||||||
var list = obj.ToObject<List<ASOrderedCollection?>>();
|
var list = obj.ToObject<List<ASOrderedCollection?>>();
|
||||||
return list == null || list.Count == 0 ? null : list[0];
|
return list == null || list.Count == 0 ? null : list[0];
|
||||||
}
|
}
|
||||||
|
@ -72,10 +80,15 @@ public sealed class ASOrderedCollectionConverter : JsonConverter
|
||||||
if (reader.TokenType == JsonToken.StartObject)
|
if (reader.TokenType == JsonToken.StartObject)
|
||||||
{
|
{
|
||||||
var obj = JObject.Load(reader);
|
var obj = JObject.Load(reader);
|
||||||
|
try { }
|
||||||
|
catch
|
||||||
|
{
|
||||||
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
||||||
return valueObj is { Value: not null }
|
if (valueObj is { Value: not null })
|
||||||
? ValueObjectConverter.HandleObject(valueObj, objectType)
|
return ValueObjectConverter.HandleObject(valueObj, objectType);
|
||||||
: obj.ToObject<ASOrderedCollection?>();
|
}
|
||||||
|
|
||||||
|
return obj.ToObject<ASOrderedCollection?>();
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Add table
Reference in a new issue