Datenbereich (Pointer) => json



  • Hallo,

    ich nutze eine Funktion " plcdevice.GetCpInfo() an die eine Referenz übergeben wird,
    in die die Funtion dann Daten in einem "struct" schreibt.

    Die Struktur sieht so aus ...

    public struct S7CpInfo
    		{
    			public int MaxPduLength;
    			public int MaxConnections;
    			public int MaxMpiRate;
    			public int MaxBusRate;
    		};
    

    Jetzt möchte ich die Daten lesen und in ein json wandeln.
    Beim Test "Console.WriteLine(jsonString);" kommt nur "{}"

    S7Client.S7CpInfo CpInfo = new S7Client.S7CpInfo();
    				
    result = plcdevice.GetCpInfo(ref CpInfo);
    string jsonString = JsonSerializer.Serialize(CpInfo);
    Console.WriteLine(jsonString);
    

    Wenn ich im Debugger einen Breakpoint mache und die var "Cpinfo" ansehe, sehe ich die Daten.
    Es funktioniert auch nachfolgendes ...

    Console.WriteLine(CpInfo.MaxBusRate);
    

    Eigentlich sollte es funktionieren ... sehe aber den Fehler nicht, warum ich das struct nicht nach json wandeln kann ?

    Vielen Dank !!!



  • Hatte mal was Ähnliches, da hat sich die Serialisierung per Reflection nur Properties angeguckt, keine normalen Member.



  • Hallo,

    das kann es doch nicht sein ... 😫
    Hat keiner eine Idee ... ??



  • @DocShoe hat dir doch schon das Problem dargestellt, also daß standardmäßig JsonSerializer.Serialize nur Eigenschaften (properties) serialisiert und nicht normale Member (fields).

    Also die Internet-Suche ergibt dann z.B. JSON-Serialisierung: Einschließen von Feldern.
    Wenn du die Struktur nicht ändern kannst (S7Client hört sich nach der Siemens-Library an), dann probiere

    var options = new JsonSerializerOptions { IncludeFields = true };
    string jsonString = JsonSerializer.Serialize(CpInfo, options);
    

Anmelden zum Antworten