Deserializing ParseObjects from the Parse.NET Platform with Json.NET

蹲街弑〆低调 提交于 2019-12-12 05:49:22

问题


I'm trying to deserialize a ParseObject (as described in the parse platform developer's guide). I'm getting an error that JSON cannot deserialize that object.

So I have created this:

public class Phase
{
    public string Details { get; set; }
    public string ObjectId { get; set; }
    public int PhaseId { get; set; }
    public bool Completed { get; set; }
    public string PhaseListName { get; set; }
    public int Position { get; set; }
    public int ButtonId { get; set; }
}

private List<ParseObject> ConvertToParseObjectList(List<Phase> phaseObjects)
{
    var _objects = new List<ParseObject>();
    for (int i = 0; i < phaseObjects.Count; i++)
    {
        var _obj = new ParseObject("CasePhases");
        _obj.ObjectId = phaseObjects[i].ObjectId;
        _obj["Details"] = phaseObjects[i].Details;
        _obj["PhaseId"] = phaseObjects[i].PhaseId;
        _obj["Completed"] = phaseObjects[i].Completed;
        _objects.Add(_obj);
    }
    return _objects;
}

private List<Phase> ConvertToPhaseObjectList(List<ParseObject> parseObjects)
{
    var target = parseObjects.ConvertAll(x => new Phase
    {
        Details = x.Get<string>("Details"),
        ObjectId = x.ObjectId,
        PhaseId = x.Get<int>("PhaseId"),
        Completed = x.Get<bool>("Completed")
    });
    return target;
}

So I can serialize and deserialize like this:

ConvertToParseObjectList(JsonConvert.DeserializeObject<List<Phase>>(Settings.PhaseObjects));
JsonConvert.SerializeObject(ConvertToPhaseObjectList( application.casePhases));

It works, but I'm trying to find out how I can tell JSON how to deserialize the object using the JsonObject and JsonProperty or something like this.

The line that thows an exception is this:

JsonConvert.DeserializeObject<List<ParseObject>>(Settings.PhaseObjects);

And the Trace is:

Xamarin caused by: android.runtime.JavaProxyThrowable: Newtonsoft.Json.JsonSerializationException: Cannot create and populate list type Parse.ParseObject. Path '[0]', line 1, position 2.
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewList(JsonReader reader, JsonArrayContract contract, ref bool createdFromNonDefaultCreator)<2781d1b198634655944cdefb18b3309b>:0
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue, string id)<2781d1b198634655944cdefb18b3309b>:0
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, object existingValue)<2781d1b198634655944cdefb18b3309b>:0
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, string id)<2781d1b198634655944cdefb18b3309b>:0
md5b8608fa4770a86d5bda0b33ebcfbec27.LiveSurgery.n_onResume(Native Method)
md5b8608fa4770a86d5bda0b33ebcfbec27.LiveSurgery.onResume()LiveSurgery.java:65
android.app.Instrumentation.callActivityOnResume()Instrumentation.java:1197
android.app.Activity.performResume()Activity.java:5496
android.app.ActivityThread.performResumeActivity()ActivityThread.java:2975
android.app.ActivityThread.handleResumeActivity()ActivityThread.java:3018
android.app.ActivityThread.handleLaunchActivity()ActivityThread.java:2422
android.app.ActivityThread.access$800()ActivityThread.java:151
android.app.ActivityThread$H.handleMessage()ActivityThread.java:1342
android.os.Handler.dispatchMessage()Handler.java:110
android.os.Looper.loop()Looper.java:193
android.app.ActivityThread.main()ActivityThread.java:5322
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke()Method.java:515
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run()ZygoteInit.java:829
com.android.internal.os.ZygoteInit.main()ZygoteInit.java:645
dalvik.system.NativeStart.main(Native Method)

来源:https://stackoverflow.com/questions/44086358/deserializing-parseobjects-from-the-parse-net-platform-with-json-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!