Я пытаюсь покинуть объект json: < /p> [code]{ "columns":"1", "ctrl":{ "height":"24", "offcolour":"#ff000000", "oncolour":"#ff00ff00", "shape":"rectangular", "type":"led", "width":"24" }, "font":"family,size(points),weight,italic,undeline", "gapx":"8", "gapy":"8", "iomask":"0x000f", "name":"Local1", "nameaffix":"Affix", "nameprefix":"Prefix", "posctrl":"3,auto,center,center,Ctrl", "pospt":"1,auto,center,center,Posn", "postag":"2,auto,center,center,Tag", "rslinx":"/CommDrivers/RAEtherNet_IPDriver/RAEtherNet_IPStation/Tags/Controller Tags/Local&:3&:O/Pt{pt}" }
[/code] Прежде чем я добавил вложенный объект "ctrl" У меня было это работа, вот класс C#: [code]class clsCtrl { [JsonPropertyName("height")] public String Height { get; set; }
[JsonPropertyName("offcolour")] public String OffColour { get; set; }
[JsonPropertyName("oncolour")] public String OnColour { get; set; }
[JsonPropertyName("shape")] public String Shape { get; set; }
[JsonPropertyName("type")] public String Type { get; set; }
[JsonPropertyName("width")] public String Width { get; set; } } class clsDIOM { clsDIOM() { Ctrl = new clsCtrl(); } [JsonPropertyName("columns")] public String Columns { get; set; }
[JsonPropertyName("ctrl")] public clsCtrl Ctrl { get; set; }
[JsonPropertyName("font")] public String Font { get; set; }
[JsonPropertyName("gapx")] public String GapX { get; set; }
[JsonPropertyName("gapy")] public String GapY { get; set; }
[JsonPropertyName("iomask")] public String IOMask { get; set; }
[JsonPropertyName("name")] public String Name { get; set; }
[JsonPropertyName("nameaffix")] public String NameAffix { get; set; }
[JsonPropertyName("nameprefix")] public String NamePrefix { get; set; }
[JsonPropertyName("posctrl")] public String PosCtrl { get; set; }
[JsonPropertyName("pospt")] public String PosPt { get; set; }
[JsonPropertyName("postag")] public String PosTag { get; set; }
[JsonPropertyName("posvalue")] public String PosValue { get; set; }
[JsonPropertyName("rslinx")] public String rsLinx { get; set; } } < /code> Логика Deserialize: < /p> string strFileContent = File.ReadAllText(mcstrFileSpec); mJSON = JsonSerializer.Deserialize(strFileContent); < /code> Я изо всех сил пытаюсь заставить суб-объект детериализовать, что-то не так. < /p> Это код, все еще не работает: < /p> class clsCtrl { public String Height { get; set; } public String OffColour { get; set; } public String OnColour { get; set; } public String Shape { get; set; } public String Type { get; set; } public String Width { get; set; } } class clsDIOM { [JsonPropertyName("columns")] public String Columns { get; set; }
public clsCtrl ctrl { get; set }
[JsonPropertyName("font")] public String Font { get; set; }
[JsonPropertyName("gapx")] public String GapX { get; set; }
[JsonPropertyName("gapy")] public String GapY { get; set; }
[JsonPropertyName("iomask")] public String IOMask { get; set; }
[JsonPropertyName("name")] public String Name { get; set; }
[JsonPropertyName("nameaffix")] public String NameAffix { get; set; }
[JsonPropertyName("nameprefix")] public String NamePrefix { get; set; }
[JsonPropertyName("posctrl")] public String PosCtrl { get; set; }
[JsonPropertyName("pospt")] public String PosPt { get; set; }
[JsonPropertyName("postag")] public String PosTag { get; set; }
[JsonPropertyName("posvalue")] public String PosValue { get; set; }
[JsonPropertyName("rslinx")] public String rsLinx { get; set; } } < /code> Отчет из консоли: < /p> 2025-07-17 09:44:48.168;FTOptixStudio;0;Error;49;Exception caught: No behaviour or observer found that handles the method 'OptionsDialog' on node Root/Objects/NewHMIProject/UI/MainWindow/scr1/pnlAll/hloColumns/Panel1/dtmDigital_IO_Module; stack dump [0] Core::Token::JWTToken::ToString stack dump [1] Core::Token::JWTToken::ToString stack dump [2] Core::operator!= stack dump [3] Core::IObject::ExecuteMethod stack dump [4] Core::IObject::ExecuteMethod stack dump [5] Core::IMethod::Execute stack dump [6] Core::IMethod::Execute stack dump [7] HMISolution::ViewModelIcon::GetPath stack dump [8] HMISolution::ViewModelIcon::GetPath stack dump [9] QObservableLib::QObservableItem::InvokeMethod stack dump [10] QObservableLib::DynamicQObject::PrepareWriteProperty stack dump [11] QObservableLib::DynamicQObject::PrepareExecuteSlot stack dump [12] QObservableLib::DynamicQObject::PrepareInvokeMethod stack dump [13] QObservableLib::DynamicQObject::qt_metacall stack dump [14] QMetaObject::metacall stack dump [15] QQmlObjectCreator::setupFunctions stack dump [16] QQmlPropertyValueInterceptor::operator= stack dump [17] QQmlPropertyValueInterceptor::operator= stack dump [18] QV4::QObjectMethod::callInternal stack dump [19] QV4::Runtime::CallPropertyLookup::call stack dump [20] stack dump [21] stack dump [22] stack dump [23] stack dump [24] stack dump [25] stack dump [26] [/code] Этот код представляет собой модуль C# для FT Optix, вызванный выбором метода OptionsDialog.