[英]How do I deserialize this JSON string back to a List<T>?
我希望能夠使用JSON
serialize
和deserialize
serialize
List<T>
,其中類型是interface
。
我的代碼可以將List<T>
serialize
字符串,但是不確定如何將JSON
字符串deserialize
化為List<T>
。
這是我的serialize
List<T>
代碼:
List<IAndroidAsset1_1> androidAssets = new List<IAndroidAsset1_1>();
AndroidMapMarkerIconAsset1_1 androidMapMarkerIconAsset1_1 = new AndroidMapMarkerIconAsset1_1();
androidMapMarkerIconAsset1_1.Id = 1;
androidMapMarkerIconAsset1_1.icon = "TestIcon";
androidAssets.Add(androidMapMarkerIconAsset1_1);
AndroidMapMarkerSimpleImageAsset1_1 androidMapMarkerSimpleImageAsset1_1 = new AndroidMapMarkerSimpleImageAsset1_1();
androidMapMarkerSimpleImageAsset1_1.Id = 2;
androidMapMarkerSimpleImageAsset1_1.expiryDate = DateTime.UtcNow;
androidMapMarkerSimpleImageAsset1_1.webAddress = "http://www.test.com";
androidAssets.Add(androidMapMarkerSimpleImageAsset1_1);
string serializedJson = JsonConvert.SerializeObject(androidAssets, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
這是我必須deserialize
化JSON
字符串的代碼:
var deserializedObject = JsonConvert.DeserializeObject<IAndroidAsset1_1>(serializedJson, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
});
這是我得到的錯誤:
Newtonsoft.Json.dll中發生類型為'Newtonsoft.Json.JsonSerializationException'的異常,但未在用戶代碼中處理
附加信息:無法將當前JSON數組(例如[1,2,3])反序列化為類型'CanFindLocation.Interfaces.Android._1_1.IAndroidAsset1_1',因為該類型需要JSON對象(例如{“ name”:“ value”} )正確反序列化。
要解決此錯誤,可以將JSON更改為JSON對象(例如{“ name”:“ value”}),也可以將反序列化類型更改為數組,或者將實現集合接口的類型(例如ICollection,IList)更改為List,例如List從JSON數組反序列化。 還可以將JsonArrayAttribute添加到類型中,以強制其從JSON數組反序列化。
路徑'',第1行,位置1。
我可以幫忙將JSON
字符串deserialize
List<T>
嗎?
提前致謝。
您要對列表進行序列化,而不是對單個IAndroidAsset1_1
對象進行序列化,因此需要反序列化為List<IAndroidAsset1_1>
類型而不是IAndroidAsset1_1
:
var deserializedObject = JsonConvert.DeserializeObject<List<IAndroidAsset1_1>>(serializedJson, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.