何が起こっていて、どうすれば修正できますか?現在のJSONオブジェクトを逆シリアル化できません(例:{"name": "value"})
アピ - >https://developers.pipedrive.com/docs/api/v1/
public class user //related
{
public int id { get; set; }
public string name { get; set; }
public string email { get; set; }
public bool has_pic { get; set; }
public string pic_hash { get; set; }
public bool active_flag { get; set; }
}
public class related_objects
{
public List<organization> organization { get; set; } // Others things...
public List<person> person { get; set; } // Others things...
public List<user> user { get; set; }
}
public class registros
{
public bool success { get; set; }
public virtual List<Data> data { get; set; }
public virtual related_objects related_objects { get; set; }
public virtual additional_data additional_data { get; set; }
}
私は戻っJSONを取得すると、それは次のようになります。
"related_objects": {
"user": {
"478548": {
"id": 478548,
"name": "UserName",
"email": "UserNameMail",
"has_pic": false,
"pic_hash": null,
"active_flag": true
}
"478548": {
"id": 478548,
"name": "UserName2",
"email": "UserName2Mail",
"has_pic": false,
"pic_hash": null,
"active_flag": true
}
}
}
List<Deals.Data> _listRegistrosDeal = new List<Deals.Data>();
JsonTextReader JsonRetorno = new JsonTextReader(new StringReader(wbc.DownloadString(Deals)));
JsonRetorno.SupportMultipleContent = true;
ser.ObjectCreationHandling = ObjectCreationHandling.Replace;
try
{
Deals.registros registros = ser.Deserialize<Deals.registros>(JsonRetorno);
foreach (Deals.Data reg in registros.data)
{
_listRegistrosDeal.Add(reg);
}
}
catch (JsonException ex)
{
Content(ex.Message);
}
List<Deals.Data> _listRegistrosDeal = new List<Deals.Data>();
List<Deals.user> _listuser = new List<Deals.user>();
JsonTextReader JsonRetorno = new JsonTextReader(new StringReader(wbc.DownloadString(Deals)));
JsonRetorno.SupportMultipleContent = true;
var d = wbc.DownloadString(Deals);
ser.ObjectCreationHandling = ObjectCreationHandling.Replace;
try
{
Deals.registros registros = ser.Deserialize<Deals.registros>(JsonRetorno);
foreach (Deals.Data reg in registros.data)
{
_listRegistrosDeal.Add(reg); // This works
}
foreach (Deals.user User in registros.related_objects.user)
{
_listuser.Add(User);
}
}
catch (JsonException ex)
{
Content(ex.Message);
}
は、私はすでに次のヒントを試してみたが、彼らは問題を解決しませんでした。
私はこのエラー+ EXを取得し続ける:
{「例えば(現在のJSONオブジェクトをデシリアライズすることはできません
{\"name\":\"value\"}
)を型 'System.Collections.Generic.List1[Intranet.Models.Vendas.Deals+user]' because the type requires a JSON array (e.g.
[1,2,3] `)に変換して正しく逆シリアル化します。JSONをJSON配列(例えば
[1,2,3]
)に変更するか、デシリアライズされたタイプを通常の.NETタイプ(例えば、整数のようなプリミティブ型ではなく、array
またはList<T>
)をJSONオブジェクトからデシリアライズすることができます。JsonObjectAttribute
を型に追加して、強制的にJSONオブジェクトから逆シリアル化することもできます。パス 'related_objects.user.555393'、行1、位置196632. "}
Newtonsoft.Json.JsonException {Newtonsoft.Json.JsonSerializationException}
エラーメッセージの答えが正しいです。配列ではないものをコレクションに入れようとしています(この場合は 'List')。あなたはそれをすることはできません。 –