Ich benutze Json.Net, um JSON in meine App Logik zu parsen. Das Problem ist, dass die externe API, von der ich den JSON bekomme, manchmal "Null" -Elemente in ihren Listen hat. Ich möchte diese "Null" -Elemente aus der Liste (oder jeder anderen IEnumerable, die das haben könnte) zur Parse-Zeit entfernen. Ich glaube, die Lösung muss einen JsonConverter verwenden, aber ich konnte es bisher nicht funktionieren.So entfernen Sie Nullwerte aus IEnumerables beim Analysieren von JSON mit Json.Net
MyData data = new MyData();
Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings
{
Converters = new List<JsonConverter>() { new TrimNullListValues() }
};
string jsonString = @"{""ListData"": [{""source"" : 10 , ""target"" : 20, ""Data"" : [{""source"" : 100 , ""target"" : 200}, null]}, null]}";
JsonConvert.PopulateObject(jsonString, data, settings);
MyData Klasse ist wie folgt:
public class MyData {
public class MyNestedData
{
public int Source;
public int Target;
public List<MyNestedData> Data;
}
public List<MyNestedData> ListData;
}
Mein JsonConverter (TrimNullListValues) ist wie folgt:
public class TrimNullListValues : JsonConverter {
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
// Don't really know what to do in here to remove unwanted values
// From the IEnumerabes
}
public override bool CanConvert(Type objectType)
{
return objectType.IsGenericType && objectType.GetGenericTypeDefinition() == typeof(List<>);
}
}
Sehen Sie, wenn es Ihnen hilft http://stackoverflow.com/questions/16455837/remove-null-values-in-json-and-update-json – Aby
Nein, das funktioniert nicht für mich :(Es würde funktionieren, wenn die ganze Liste null war, aber nicht für Werte innerhalb der Liste. Thx sowieso – alamatula