Код: Выделить всё
{
"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}"
}
Код: Выделить всё
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]
Подробнее здесь: https://stackoverflow.com/questions/797 ... th-nesting