Fehler beim Deserialisieren json-string mit json.Net
Bin ich der Begegnung eine seltsame Fehlermeldung, wenn ich versuche zu Deserialisieren Sie die folgenden, einfachen json-string:
{ "items": [ "IZ01", "MTSQ", "VM16", "CR05" ]}
Den Fehler, dass ich immer aus der json.net dll ist die folgende:
Invalid property identifier character: &. Path '', line 1, position 2.
Den vollständigen stack-trace ist wie folgt:
at Newtonsoft.Json.JsonTextReader.ParseProperty() at Newtonsoft.Json.JsonTextReader.ParseObject() at Newtonsoft.Json.JsonTextReader.ReadInternal() at Newtonsoft.Json.JsonTextReader.Read() at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CheckedRead(JsonReader reader) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Metastorm.Runtime.Models.SIMSCommonLib.UtilitiesLib.JSONDeserialize(String jsonText, Type valueType) at Metastorm.Runtime.Models.JobProject.ExternalExtendedHelper.GetMaintenanceCodesForVehicle(String LPEntityCode, String UMC, String VIN, String EquipmentList)
Dies ist die Methode, die ich benutze für deserialising einen json-string:
public static object JSONDeserialize(string jsonText, Type valueType)
{
Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
json.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
json.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
StringReader sr = new StringReader(jsonText);
Newtonsoft.Json.JsonTextReader reader = new JsonTextReader(sr);
object result = json.Deserialize(reader, valueType);
reader.Close();
return result;
}
Habe ich dieses Problem nur in der UAT-Umgebung unserer Anwendung. Das merkwürdige ist, dass die gleichen code und den gleichen Daten korrekt in unsere Entwicklungs-und Testumgebungen.
Keine Ahnung warum json.net ist die Berichterstattung ein Problem mit der Zeichen "&"?
Es scheint nicht viel Sinn...
InformationsquelleAutor xavigar | 2013-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft, das Problem zu beheben ich.
Es stellt sich heraus, dass die Zeichenfolge, die ich geschickt wurde, um die Methode 'JSONDeserialize' wurde HTML codiert.
Den JSON-string, anstatt die folgenden:
War eigentlich die folgende:
Um das problem zu beheben habe ich aktualisiert 'JSONDeserialize' - Methode wie folgt:
InformationsquelleAutor xavigar