Wie man anzeigen von JSON-Feld zu POCO mit Automapper
Ist es möglich, erstellen Sie ein mapping zwischen POCO und JSON-Feld mit Automapper?
public class SomeObjectEntity
{
//JSON
public string TaskData { get; set; }
public GUID Id { get; set; }
public DateTime CreateTime { get; set; }
}
public class SomeObjectModel
{
public string Name { get; set; }
public string[] Emails { get; set; }
public GUID Id { get; set; }
public DateTime CreateTime { get; set; }
}
In TaskData habe ich diese JSON-string:
@"
{
""Name"": ""Denis"",
""EMails"": [
""[email protected]"",
""[email protected]""
]
}"
Gibt es eine Möglichkeit zum erstellen, anzeigen?
protected override void Configure()
{
Mapper.CreateMap<SomeObjectEntity, SomeObjectModel>() ...
Mapper.CreateMap<SomeObjectModel, SomeObjectEntity>() ...
}
Dank.
- Was soll anzeigen, was? Was versuchen Sie zu erreichen?
- Ich denke, zuerst muss ich Json string Deserialisieren und dann map deserialisiert Objekt-Modell. Kann mit BeforeMap auf Automapper und dann die Arbeit mit dem Modell und deserialisiert ein Objekt?
- Ja, Sie haben Deserialisieren Sie es zuerst. Benutzen Sie eine Bibliothek wie JSON.NET für, die. Es ist mir noch immer unklar, was Sie versuchen, um anzeigen zu was und aus welchem Grund, kannst du das etwas erläutern?
- Sie nicht benötigen, sollten die mapper.. nur etwas tun, wie
SomeObjectModel model = new JavaScriptSerializer().Deserialize<SomeObjectModel>(instanceOfSomeObjectEntity.TaskData);
undmodel
enthält Ihre Daten. - Ihr Kommentar ist völlig unlesbar....
- Ja ok, aber was ist, wenn ich zuordnen müssen einige Felder, die nicht gehalten werden in JSON wie ich es bearbeitet
- haben Sie versucht, JasonP Lösung?
- Ich weiß, wie Sie JavaScriptSerializer und es ist nicht das, was ich brauche, da hatte ich andere Felder, die nicht gehalten werden im JSON-sting. So kann ich schreiben, benutzerdefinierte mapper oder verwenden Sie Automapper, aber ich weiß nicht, wie das erstellen der Karte
- Ich bin immer noch nicht verstehen, was Sie Fragen... glaube nicht, dass du der erste mit diesem problem konfrontiert(?). Suchen Sie einfach SO, es gibt zig Antworten zu, wie das Parsen eines json.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus dem obigen code, ich sehe, möchten Sie die
Name
+Emails
Eigenschaften aus derSomeObjectModel
Klasse, und schalten Sie diese in ein JSON-string und anzeigen dieser auf denSomeObjectEntity.TaskData
string-Eigenschaft. Dies kann erreicht werden, mithilfe einer benutzerdefinierten AutoMapper ValueResolver.Und rufen Sie dann die mapper-code:
Dies ist nur für eine Art und Weise verbindlich. Haben Sie den code schreiben, gehen die entgegengesetzte Richtung: SomeObjectModel --> SomeObjectEntity.
Erwähnt, Jeroen, müssen Sie zuerst Deserialisieren Ihre json-string im entsprechenden Typ. Und um das zu tun, können Sie die folgenden verwenden. Vorausgesetzt, Ihr Typ entspricht dem json ist T, die folgenden deserialisiert es und gibt Ihnen ein Objekt, können Sie es verwenden, um die Karte.
Können Sie auch http://json2csharp.com/ zu helfen, generieren Sie die Art Ihre entsprechenden json-string. Es wird Ihnen Zeit zu sparen.
Wenn SomeObjectEntity oder TaskData in Ihrer Beschreibung ist die Objekt-Darstellung der json-string ist, dann ist das, was T ist.
Sobald du das json deserialisiert, können Sie entweder manuell zuordnen oder verwenden Sie https://github.com/AutoMapper/AutoMapper
ParseJsonToObjectAsync<T>(...)
b) Warum brauchen Sie eine andere Aufgabe nur zum Parsen der json-string? Was ist der threshold-Wert, gleicht die Kosten für die Erstellung einer neuen Aufgabe.