Как покинуть объект json с гнездованием [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Как покинуть объект json с гнездованием [закрыто]

Сообщение Anonymous »

Я пытаюсь покинуть объект json: < /p>

Код: Выделить всё

{
"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}"
}

Прежде чем я добавил вложенный объект "ctrl" У меня было это работа, вот класс C#:

Код: Выделить всё

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]
Этот код представляет собой модуль C# для FT Optix, вызванный выбором метода OptionsDialog.

Подробнее здесь: https://stackoverflow.com/questions/797 ... th-nesting
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»