Typ 'System.String' wird nicht unterstützt, die für die Deserialisierung des Arrays

Habe ich Probleme mit der Deserialisierung ein verschachteltes array von JSON-Objekten in c# mit JavascriptDeserializer oder NewtonJSON. Ich habe überall gesucht hier und versuchte vorgeschlagen behebt, aber es gibt mir immer dieses:
Bearbeiten Hinzugefügt vollständige Antwort Fehler

{
"Message": "Type 'System.String' is not supported for deserialization of an array.",
"StackTrace": "   at System.Web.Script.Serialization.ObjectConverter.ConvertListToObject(IList list, Type type, JavaScriptSerializer 
        serializer, Boolean throwOnError, IList& convertedList)  
    at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer 
        serializer, Boolean throwOnError, Object& convertedObject)\r\n   
    at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer 
        serializer, Boolean throwOnError, Object& convertedObject)\r\n   
    at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n   
    at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, 
        IDictionary`2 rawParams)\r\n   
    at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)",
"ExceptionType": "System.InvalidOperationException"

}

JSON sendet es an den webservice endet so Aussehen:

{
    "ProfileEntries": [
        {
            "TypeId": "C",
            "CodeId": "HEARTDZ ",
            "StudComment": "testComment"
        },
        {
            "TypeId": "C",
            "CodeId": "HIBLOOD "
        },
        {
            "TypeId": "F",
            "CodeId": "MARFANF ",
            "StudComment": "testComment"
        },
        {
            "TypeId": "F",
            "CodeId": "MITRALF "
        }
    ]
}

Den Grund sehen Sie einige Objekte, die ohne "StudComment" ist, weil ich bin mit Knock-out auf einen Wert speichern, der ursprünglich nicht Teil des Objekts sind, wenn geladen.

Meine web-service im Grunde tut dies, um eine Liste von JSON deserialisiert Bearbeiten Hinzugefügt name der Methode

public void SaveProfileEntries(string ProfileEntries)
    {
        var healthInfoProfileEntries = new JavaScriptSerializer().Deserialize<HealthEntries>(ProfileEntries); 

Diese sind die Klassen, die ich zum Deserialisieren der Daten:

public class HealthEntries
{
    [JsonProperty("ProfileEntries")]
    public List<HealthEntry> ProfileEntries { get; set; }
}

public class HealthEntry
{
    [JsonProperty("TypeId")]
    public string TypeId { get; set; }

    [JsonProperty("CodeId")]
    public string CodeId { get; set; }

    [JsonProperty("StudComment")]
    public string StudComment { get; set; }
}

Es ist verwirrend, weil, wenn ich es testen mit VS unit-tests, es funktioniert perfekt, aber wenn ich es in meine website, es gibt mir die gleichen InvalidOperationException

Habe ich versucht, NewtonJSON mit dieser Methode, aber es funktioniert entweder nicht

var healthInfoProfileEntries = (HealthEntries)JsonConvert.DeserializeObject(ProfileEntries, typeof(HealthEntries));

Jede Hilfe ist willkommen, danke.

  • Ist der name der variable mit JSON-string, den Sie übergeben, in der Methode Deserialisieren, ProfileEntries?
  • Ja, ich habe sicher es war die gleiche, oder es würde mir ein Parameter-Fehler
  • Könnten Sie den vollständigen Fehler-Daten, die in Ihrer Frage?
  • Ich habe es jetzt
InformationsquelleAutor cafeConLeche | 2014-04-17
Schreibe einen Kommentar