Если есть возможность, подскажите, пожалуйста, как изменить код в Книге3_1.xlsm, чтобы в генерируемом json после "relations" не выводились квадратные скобки, а выводились только фигурные скобки (см. скрин png)? В блоке Types вместо "relation": {"table": "table1", "field": "field1", "displayField": "displayField1"} выдается все то же самое, но в дополнительных квадратных скобках [], потому что в цикле добавляется 'jsonDictionary4.Add "relation", jsonItems2' (и автоматически проставляются квадратные скобки). А в данном случае нужны именно {}, т.к. в них описывается объект json. [] вообще не нужны.
Код
For i = 2 To excelRange.Rows.Count 'Вывод блока Types
If Cells(i, 4) = "id" Then
If Cells(i, 7) <> "" Then
jsonDictionary3("table") = Cells(i, 1)
jsonDictionary3("field") = "id"
jsonDictionary3("displayField") = "id"
jsonItems2.Add jsonDictionary3
Set jsonDictionary3 = Nothing
jsonDictionary4("name") = Cells(i, 7)
jsonDictionary4("type") = "SysRelation"
jsonDictionary4("displayName") = Cells(i, 2)
jsonDictionary4.Add "relation", jsonItems2
jsonItems3.Add jsonDictionary4
Set jsonDictionary4 = Nothing
Set jsonItems2 = Nothing
'Else: MsgBox ("Некорректно заполнен id в строке " & i)
End If
End If
Next i
объектов: ноль или более пар ключ:значение (name/value) внутри фигурных скобок. Пары разделяются запятыми
массивов: ноль или более значений (values) внутри квадратных скобок. Значения разделяются запятыми.
Автор модуля JsonConverter Тим Холл решил для объектов использовать класс VBA Dictionary (есть в проекте из #1), для массивов - стандартный объект VBA Collection.
В строке 13 из #1 Вы в объект добавляете пару с ключом "relation" и значением, которое содержится в коллекции jsonItems2, соответственно, это значение и выводится как массив.