#asp.net #.net #json #vb.net #json.net
#asp.net #.net #json #vb.net #json.net
Вопрос:
Я использую Json.У нас с NET есть следующий файл JSON. Что я хочу сделать, так это иметь возможность добавлять новые и удалять существующие «неудобства» из файла и сохранять результат обратно.
{
"Name": "PACS",
"StorageDirectory": "new password",
"StorageCompression": false,
"MaximumStorageSize": 0,
"MaximumPatientCount": 0,
"Plugins": [
"C:/Orthanc/Plugins/"
],
"PostgreSQL": {
"EnableIndex": true,
"EnableStorage": false,
"Host": "127.0.0.1",
"Port": 5432,
"Database": "ort",
"Username": "postgres",
"Password": "77"
},
"HttpServerEnabled": true,
"HttpPort": 8042,
"HttpDescribeErrors": true,
"HttpCompressionEnabled": true,
"RegisteredUsers": {
"ace": "bat67"
},
"DicomModalities" : {
"Mod1" : {
"AET": "INSTANCE-A",
"Port": 123,
"Host": "10.0.0.1",
"AllowEcho": true,
"AllowFind": false,
"AllowMove": false,
"AllowStore": false
},
"Mod2" : {
"AET": "INSTANCE-B",
"Port": 123,
"Host": "10.0.0.1",
"AllowEcho": true,
"AllowFind": false,
"AllowMove": false,
"AllowStore": false
}
},
"DicomAlwaysAllowStore": false,
"DicomCheckModalityHost": false,
"DicomScuTimeout": 10,
"Dictionary": {}
}
До сих пор я был в состоянии создать новый объект «DicomModalities» и сериализовать его, но могу выяснить, как добавить его в файл или удалить существующие объекты «DicomModalities», например «Mod1», «Mod2»
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim modality As Modality = New Modality()
modality.AET = "AET"
modality.Port = 111
modality.Host = "22.66.77.88"
modality.AllowEcho = False
modality.AllowFind = True
modality.AllowMove = False
modality.AllowStore = True
Dim output As String = JsonConvert.SerializeObject(modality)
MsgBox(output)
End Sub
Public Class Modality
Public Property AET As String
Public Property Port As Integer
Public Property Host As String
Public Property AllowEcho As Boolean
Public Property AllowFind As Boolean
Public Property AllowMove As Boolean
Public Property AllowStore As Boolean
End Class
Любая помощь была бы очень признательна.
Комментарии:
1. Ваша проблема в том, что повторяющиеся данные (модальность) НЕ задаются набором [] вокруг начала и конца повторяющихся данных. В результате каждая модальность будет рассматриваться как отдельный объект класса, а НЕ повторяющийся набор данных. Эти данные с точки зрения json не являются массивом данных, но каждый экземпляр должен рассматриваться как новый и отдельный объект. Добавление новых узлов возможно, но вы уверены, что это правильный формат данных? В нынешнем виде у вас есть == MyModals. Неудобства. Mod1 == и == Мои модели. Неудобства. Mod2 ==
2. Вам нужны мои модели. Неудобства. Mods() (IList / массив) данных.
3. Как сказал @Albert D. Kallal, использование классов,
Mod1
иMod2
считаются свойствамиDicomModalities
. Вам придется изменить структуру классов, чтобы добавить новое свойство. Если этот JSON предназначен не для обмена данными, а для хранения, изменитеDicomModalities
, чтобы его значением был словарь / Список / массивModality
классов.4. Проблема в том, что DicomModalities НЕ окружен набором []. Таким образом, это не повторяющиеся данные. Говоря простым английским языком, это было бы похоже на создание новой таблицы с ОДНОЙ строкой. Требуется имя таблицы, и действительно сложно создать систему, в которой вы добавляете целую новую таблицу для ОДНОЙ строки данных. Если бы данные содержали набор скобок вокруг предполагаемых повторяющихся данных, это было бы легко. В Visual Studio добавьте новый класс, очистите его, а затем перейдите к вставке special. Выберите XML или JSON, и VS затем сгенерирует для вас объект класса. Вы видите, что Mod1 и Mode2 считаются классами sperate
5. Я полагаю, пользователь хочет, чтобы все было именно так — но это означает, что вы ищете тот же набор данных, что и тот же тип, но сохраняете эти данные в виде отдельных узлов (классов / таблиц) вместо того, что должно быть повторяющимися данными. Просто хочу убедиться, что этот клоунский беспорядок на родео действительно то, чего хочет постер, прежде чем публиковать уродливое решение.