|
JSON в глобалы
|
|||
---|---|---|---|
#18+
Здравствуйте!Есть данные в json Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Нужно данные записать в глобал ^global.Чтобы результат был таким Глобал 1: ^global(1) = "" 2: ^global(1,1) = "" 3: ^global(1,1,1) = "" 4: ^global(1,1,1,1) = "1111a" 5: ^global(1,2) = "12a" 6: ^global(1,3) = "" 7: ^global(1,3,1) = "131a" 8: ^global(2) = "" 9: ^global(2,1) = "" 10: ^global(2,1,1) = "211a" 11: ^global(2,1,2) = "212a" 12: ^global(2,2) = "" 13: ^global(2,2,1) = "221a" 14: ^global(2,2,2) = "222a" 15: ^global(2,2,3) = "" 16: ^global(2,2,3,1) = "2231a" Как это можно реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 08:00 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
kassmanЕсть данные в json Это не json... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 08:15 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
krvsa,var globalObj = { '^global(1)' : { '^global(1,1)' : { '^global(1,1,1)' : '111a' } }, '^global(2)' : { '^global(2,1)' : { '^global(2,1,1)' : '211a', '^global(2,1,2)' : '212a' }, '^global(2,2)' : { '^global(2,2,1)' : '221a', '^global(2,2,2)' : '222a', '^global(2,2,3)' : { '^global(2,2,3,1)' : { '^global(2,2,3,1,1)' : '22311a' } } } } } ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 08:22 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
kassman , как иллюстрация... n s pos=1 s str="'^global(1)':{'^global(1,1)':{'^global(1,1,1)':'111a'}},'^global(2)':{'^global(2,1)':{'^global(2,1,1)':'211a','^global(2,1,2)':'212a'},'^global(2,2)':{'^global(2,2,1)':'221a','^global(2,2,2)':'222a','^global(2,2,3)':{'^global(2,2,3,1)':{'^global(2,2,3,1,1)':'22311a'}}}}" do { s name="" s pos=$locate(str,"\^[a-z()\d,]+",pos,,name) s len=$l(name) if $i(pos,len) if name'="" { s value="" if $locate(str,":[\s\S]+?(?=')",pos,,value) s value=$s(value=":{":"",1:$e(value,3,*)) w ! zw name,value // s @name=value } } while len q ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 08:45 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
krvsa,спасибо)очень помогли:) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 09:00 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
kassman , Вы не указали версию ($zv), поэтому привожу два варианта: >=2015.3 s obj = { "^global(1)" : { "^global(1,1)" : { "^global(1,1,1)" : "111a" } }, "^global(2)" : { "^global(2,1)" : { "^global(2,1,1)" : "211a", "^global(2,1,2)" : "212a" }, "^global(2,2)" : { "^global(2,2,1)" : "221a", "^global(2,2,2)" : "222a", "^global(2,2,3)" : { "^global(2,2,3,1)" : { "^global(2,2,3,1,1)" : "22311a" } } } } } d tree(obj) tree(obj) { s iter = obj.$getIterator() while iter.$getNext(.key,.value ) { i obj.$getTypeOf(key)="object" { w "name = "_key_", value = ",! d tree(value) }else { w "name = "_key_", value = "_value,! } } } <2015.3 d ##class(%ZEN.Auxiliary.jsonProvider).%ParseJSON("{""^global(1)"":{""^global(1,1)"":{""^global(1,1,1)"":""111a""}},""^global(2)"":{""^global(2,1)"":{""^global(2,1,1)"":""211a"",""^global(2,1,2)"":""212a""},""^global(2,2)"":{""^global(2,2,1)"":""221a"",""^global(2,2,2)"":""222a"",""^global(2,2,3)"":{""^global(2,2,3,1)"":{""^global(2,2,3,1,1)"":""22311a""}}}}}",,.obj) d tree(obj,"") tree(obj,name) { s key = $o(obj.%data(name)) while (key '= "") { s value=$g(obj.%data(key)) i $IsObject(value),value.%IsA("%ZEN.proxyObject") { w "name = "_key_", value = ",! d tree(value,"") }else { w "name = "_key_", value = "_value,! } s key = $o(obj.%data(key)) } } PS: я бы задумался над другим форматом JSON представления глобала, чем у Вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 10:39 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
krvsa , Если значение само содержит кавычки, например '''111a''' вместо '111a' или ^global('1') вместо ^global(1), то код перестаёт правильно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 10:52 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
Кроме того нужно ещё учитывать наличие escape-последовательности в строках : например, строка ' ' должна преобразовываться в символ $c(0). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:16 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
servitЕсли значение ... Код был написан под тот пример, что дал ТС и не более того... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:29 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
servitКроме того нужно ещё учитывать ... krvsaкак иллюстрация... Я х/з как еще объяснить... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 11:31 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
servit, Cпасибо за Ваши варианты ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 06:59 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
servit,Здравствуйте Какой формат json вы имели ввиду? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 13:06 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
kassmanservit,Здравствуйте Какой формат json вы имели ввиду?Как минимум более компактный - имя глобала достаточно упомянуть лишь один раз, например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
save(obj) { s name = obj.name s iter = obj.nodes.$getIterator() k @name while iter.$getNext(, .node) { s values = "" s valuesIter = node.$get(1).$getIterator() while valuesIter.$getNext(, .v) { s $li(values, *+1) = v } s @(name_"("_node.$get(0)_")") = values } zw @name } Результат: USER>d ^test ^global(1,1,1)=$lb("111a","111b") Код: plaintext
PPS: при наличии доступа к 2016.2, взгляните на Caché DocDM ( Doc ument D ata M odel). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 16:15 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
servitPS: надеюсь, случаи вида Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2016, 11:33 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
Alexey MaslovЭто сломает предложенный JSON-формат?Нет, это потребует всего лишь доработки (усложнения (замедления)) кода для таких случаев. Вопрос, а надо ли ТС это ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2016, 11:45 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
Я может быть, скажу глупую, тривиальную вещь, причем излишне самоуверенно. Но зачем вы думаете о том, как отобразить глобалы в JSON? Нужно думать о том, как отобразить глобалы в объекты, а уже объект без проблем отобразится в JSON. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 06:20 |
|
JSON в глобалы
|
|||
---|---|---|---|
#18+
Блок А.Н.Но зачем вы думаете о том, как отобразить глобалы в JSON? Нужно думать о том, как отобразить глобалы в объекты, а уже объект без проблем отобразится в JSON.Может быть потому, что изначально проект делался(ется) не под Caché (GlobalsDB, GT.M, др.), в которых объектов нет (или потенциально может не быть)? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 09:29 |
|
|
start [/forum/topic.php?fid=39&tid=1556525]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 157ms |
0 / 0 |