Bu, Android cihazlardan istekleri alan bir WCF hizmetidir. Aynı istek, lollyop cihazlarından değil, jelibon cihazlarından değil, çünkü jellybean JSON'u yaratımda farklı şekilde düzenler.JSON alanlarının değiştirileceği yer olan Newtonsoft JSON.net serileştirme hatası
istisna:
beklenmeyen belirteç nesnesi deserializing: String. Yol 'SearchFilters.config $ tür.', Satır 1, pozisyon 212.
Json Sigara çalışan:
{
"DeviceType": 2,
"SearchFilters": {
"config": {
"$values": [
{
"Collection": {
"DeviceType": 2
},
"Category": ""
}
],
"$type": "System.Collections.Generic.List`1[[Yoosh.SharedClasses.YooshConfig, YooshSharedClassesDll]], mscorlib"
}
},
"RequestingUserId": "66666666-6666-6666-6666-666666666666",
"APIKey": "xxx"
}
Çalışma Json:
{
"APIKey": "xxx",
"DeviceType": 2,
"RequestingUserId": "66666666-6666-6666-6666-666666666666",
"SearchFilters": {
"config": {
"$type": "System.Collections.Generic.List`1[[Yoosh.SharedClasses.YooshConfig, YooshSharedClassesDll]], mscorlib",
"$values": [
{
"Category": "",
"Collection": {
"DeviceType": 2
}
}
]
}
}
}
bazı alanlar farklı olan sipariş .. Tek fark bu.
C# sınıfı:
public class QueryParameters
{
BaseParameters m_baseParameters;
Guid m_gRequestingUserId;
Dictionary<string, object> m_SearchFilters;
[DataMember]
public string APIKey
{
get { return m_baseParameters.APIKey; }
set { m_baseParameters.APIKey = value; }
}
[DataMember]
public BaseParameters.YooshDeviceType DeviceType
{
get { return m_baseParameters.DeviceType; }
set { m_baseParameters.DeviceType = value; }
}
[DataMember]
public string DeviceId
{
get { return m_baseParameters.DeviceId; }
set { m_baseParameters.DeviceId = value; }
}
[DataMember]
public Guid RequestingUserId
{
get { return m_gRequestingUserId; }
set { m_gRequestingUserId = value; }
}
[DataMember]
public Dictionary<string, object> SearchFilters
{
get { return m_SearchFilters; }
set { m_SearchFilters = value; }
}
}
Json.net sürümü: 6.0.8
$ türüne özeldir. Onu yeniden düzenleyebileceğini sanmıyorum. Newtonsoft Json, seri hale getirme sırasında hangi C# nesnesinin oluşturulacağını belirlemek için kullanır. Bir sözlüğünüz olduğundan, ne tür bir nesnenin oluşturulacağını anlamak için muhtemelen $ türüne ihtiyaç duyar. –
Olası kopyası http://stackoverflow.com/questions/15570510 –
'66666666-6666-6666-6666-666666666666' - Canavarın Kimliği – arootbeer