powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JSON to Object (ID)
5 сообщений из 30, страница 2 из 2
JSON to Object (ID)
    #39273135
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.В предыдущих версиях было вроде бы _id и _classname, поэтому искал что-то подобное.Забудьте: всё течёт, всё меняется, как подтвердил Timur Safin.
Вот обновлённый пример для 2016.3:Class test.demo Extends %Persistent
{

Property f As %String;

ClassMethod Test()
{
  #Define extentData @$$$defMemberKeyGet($this,$$$cCLASSstorage,$$$nameDefaultStorageNameGet,$$$cSDEFdatalocation)
  
  k $$$extentData
  
  s obj=..%New()
  s obj.f="a"
  d obj.%Save()

  zw $$$extentData
  
  s jsonStr=obj.$toJSON()
  w !,jsonStr,!!
  
  s json=({}).$fromJSON(jsonStr)
  s json.f="bbb"
  
  d ##class(%ComposeUtil).$mapObjectToRegistered({"f":"aaa"},..%New()).%Save()
  d ##class(%ComposeUtil).$mapObjectToRegistered(json,obj).%Save()
  
  /*
  ; или
  d ..%FromObject({"f":"aaa"},..%New()).%Save()
  d ..%FromObject(json,obj).%Save()
  */
  
  /*
  ; или
  d ({"f":"aaa"}).$compose({"mode":"lax","returnValue":..%New()}).%Save()
  d json.$compose({"mode":"lax","returnValue":obj}).%Save()
  */
  
  zw $$$extentData
}

}

Результат:

USER>d ##class(test.demo).Test()
^test.demoD=1
^test.demoD(1)=$lb("","a")

{"$CLASSNAME":"test.demo","$REFERENCE":"1","f":"a"}

^test.demoD=2
^test.demoD(1)=$lb("","bbb")
^test.demoD(2)=$lb("","aaa")
Код: plaintext
Т.е. Вы можете на основе JSON(-строки/-объекта) добавить/обновить хранимый объект, причём разными способами.

PS: кроме того в классе ComposeUtil есть много других разных полезных методов, в частности:mapGenericObjectToAbstractObject
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
/// This mapper accepts any object (oref) and returns an %AbstractObject. This is just a dispatcher that invokes the most reasonable mapper depending on the 
/// type information gathered from the source object. 
SystemClassMethod mapGenericObjectToAbstractObject(
  source As %CacheString,
  target As %Library.AbstractObject = "",
  laxMode As %Integer = 1,
  asReference As %Integer = 1,
  nested As %Integer = 0) As %Library.AbstractObject
{
...
Рейтинг: 0 / 0
JSON to Object (ID)
    #39273288
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

Заманчиво. А когда ожидается релиз?
...
Рейтинг: 0 / 0
JSON to Object (ID)
    #39273291
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.А когда ожидается релиз?Надеюсь, в этом году.
...
Рейтинг: 0 / 0
JSON to Object (ID)
    #39278406
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывести результат запроса в JSON можно например так:

Код: plaintext
1.
SAMPLES>w ##class(%SQL.Statement).%ExecDirect(,"select top 3 Age, DOB from Sample.Person where Age>?",50).$compose("%Array").$toJSON()
[{"Age":66,"DOB":39963},{"Age":68,"DOB":39060},{"Age":56,"DOB":43652}]
...
Рейтинг: 0 / 0
JSON to Object (ID)
    #39298435
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, FieldTest 2016.2 серьезно переделали в плане JSON, кое что выпилили, что-то поменяли. 2016.3 версию отменили .
почитатать об изменениях можно здесь , в основном это изменены JSON классы, и вызовы методов вместо $fromJSON теперь %FromJSON. И здесь можно почитать о том как адаптировать свое приложение для перехода с 2016.1
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JSON to Object (ID)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]