[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
|
@ -57,19 +57,38 @@ public sealed class ASCollectionConverter : JsonConverter
|
|||
{
|
||||
if (reader.TokenType == JsonToken.StartArray)
|
||||
{
|
||||
var obj = JArray.Load(reader);
|
||||
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
||||
if (valueList is { Count: > 0 })
|
||||
return VC.HandleObject(valueList[0], objectType);
|
||||
var obj = JArray.Load(reader);
|
||||
|
||||
try
|
||||
{
|
||||
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
||||
if (valueList is { Count: > 0 })
|
||||
return VC.HandleObject(valueList[0], objectType);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
|
||||
var list = obj.ToObject<List<ASCollection?>>();
|
||||
return list == null || list.Count == 0 ? null : list[0];
|
||||
}
|
||||
|
||||
if (reader.TokenType == JsonToken.StartObject)
|
||||
{
|
||||
var obj = JObject.Load(reader);
|
||||
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
||||
return valueObj != null ? VC.HandleObject(valueObj, objectType) : obj.ToObject<ASCollection?>();
|
||||
var obj = JObject.Load(reader);
|
||||
try
|
||||
{
|
||||
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
||||
if (valueObj != null)
|
||||
return VC.HandleObject(valueObj, objectType);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
|
||||
return obj.ToObject<ASCollection?>();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -61,21 +61,34 @@ public sealed class ASOrderedCollectionConverter : JsonConverter
|
|||
{
|
||||
if (reader.TokenType == JsonToken.StartArray)
|
||||
{
|
||||
var obj = JArray.Load(reader);
|
||||
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
||||
if (valueList?.Any(p => p.Value != null) ?? false)
|
||||
return ValueObjectConverter.HandleObject(valueList[0], objectType);
|
||||
var obj = JArray.Load(reader);
|
||||
try
|
||||
{
|
||||
var valueList = obj.ToObject<List<LDValueObject<object?>>>();
|
||||
if (valueList?.Any(p => p.Value != null) ?? false)
|
||||
return ValueObjectConverter.HandleObject(valueList[0], objectType);
|
||||
}
|
||||
catch
|
||||
{
|
||||
//ignored
|
||||
}
|
||||
|
||||
var list = obj.ToObject<List<ASOrderedCollection?>>();
|
||||
return list == null || list.Count == 0 ? null : list[0];
|
||||
}
|
||||
|
||||
if (reader.TokenType == JsonToken.StartObject)
|
||||
{
|
||||
var obj = JObject.Load(reader);
|
||||
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
||||
return valueObj is { Value: not null }
|
||||
? ValueObjectConverter.HandleObject(valueObj, objectType)
|
||||
: obj.ToObject<ASOrderedCollection?>();
|
||||
var obj = JObject.Load(reader);
|
||||
try { }
|
||||
catch
|
||||
{
|
||||
var valueObj = obj.ToObject<LDValueObject<object?>>();
|
||||
if (valueObj is { Value: not null })
|
||||
return ValueObjectConverter.HandleObject(valueObj, objectType);
|
||||
}
|
||||
|
||||
return obj.ToObject<ASOrderedCollection?>();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
Loading…
Add table
Reference in a new issue