Behalten Sie die JSON-Deserialisierung beim Umschließen des List<>-Mitglieds in der Utility-Klasse beiC#

Ein Treffpunkt für C#-Programmierer
Guest
 Behalten Sie die JSON-Deserialisierung beim Umschließen des List<>-Mitglieds in der Utility-Klasse bei

Post by Guest »

Angenommen eine vorhandene Klasse, in die vorhandene JSON-Nutzlasten deserialisiert werden, wie zum Beispiel:

Code: Select all

public class X {
public int A;
public List B;
}
D.h. Die JSON-codierte Zeichenfolge hat ein Top-Level „A“: sowie „B“: [, , ...].
Und vorausgesetzt, ich möchte B oder allgemeiner List in eine Klasse einschließen, die ansonsten eine oder zwei Dienstprogrammmethoden bereitstellt, die für die Geschäftslogik spezifisch sind unausgedrückt in List (oder string im Allgemeinen) – Das heißt, ich möchte die allgemeine Funktionsweise von List nicht erweitern – ohne die JSON-Eingabe/Ausgabe zu ändern, wie in:

Code: Select all

public class ListOfStringUtility {
public List Items { get; set; }
//...and appropriate supporting methods for just that one public property/field...
}
Die ursprüngliche Klasse wird also:

Code: Select all

public class X {
public int A;
public ListOfStringUtility B;
}
Wie lässt sich am besten angeben, dass B, oder idealerweise ListOfStringUtility, weiterhin dekodiert werden soll (durch System.Text.Json und/ oder Newtonsoft.Json) direkt in das einzelne List-Mitglied, das von ListOfStringUtility umschlossen wird, und nicht in eine Instanz dieser Klasse mit einem Mitglied, wenn in eine oberste Ebene deserialisiert wird X-Instanz?
Was ist in ähnlicher Weise der beste Weg, um beizubehalten, wie diese Klasse zuvor serialisiert worden wäre, sodass das resultierende JSON (einer Instanz von X) hat ein „B“ der obersten Ebene: [, , ...] statt „B“: { „Items“: [, , ...] ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post