set dObj={} // %Library.DynamicObject 动态变量
set dObj.Name="Lucy"
set dObj=[] // %Library.DynamicArray 动态数组
// 变量
set obj.Name="Lijie"
// 数组
set list."0"={"a":"1"}
set list."1"={"b":"2"}
// 插入到末尾
do list.%Push(obj)
| 操作 | 说明 |
|---|---|
| %Get(key) | 获取值 |
| %Remove(key) | 删除 |
| %Remove(key) | 删除 |
| %Set(key, value, type) | 设置值 |
示例
set obj={}
do obj.%Set("Code",1)
do obj.%Delete("Code")
s obj={}
s obj.Name="Lijie"
s obj.Sex="Male"
set iter = obj.%GetIterator()
while iter.%GetNext(.key , .value )
{
write "key = "_key_" , value = "_value,!
}
for i=0:1:list.%Size()-1 {
write list.%Get(i).%ToJSON()
}
%ArrayOfDataTypes、%ListOfDataTypes应用于基本类型; %ArrayOfObjects、%ListOfObjects应用于对象。
其中List类类似数据,使用Insert、Count、GetAt方法操作;Array类类似Map,使用SetAt、Next、GetAt方法访问。
可用该对象表示只有一级的JSON,也可当Map用
s obj=##class(%ArrayOfDataTypes).%New()
s obj.SetAt("value","Name")
s value=obj.GetAt(“Name”)
set key=""
For
{
s key=obj.Next(key)
q:key=""
s value=obj.GetAt(key)
}
JSON数组是字符串时使用
s obj=##class(%ListOfDataTypes).%New()
do obj.Insert("red")
do obj.Insert("green")
s value=obj.GetAt(1)
For set i=1:1:obj.Size
{
Write list.GetAt(i).Value,!
}
JSON数组使用
示例如下:
Class Sample.Test
{
Property Value As %String;
ClassMethod Test()
{
// w ##class(Sample.Test).Test()
set list=##class(%Library.ListOfObjects).%New()
set obj=##class(Sample.Test).%New()
set obj.Value="aa"
do list.Insert(obj)
set obj=##class(Sample.Test).%New()
set obj.Value="bb"
do list.Insert(obj)
set obj=##class(Sample.Test).%New()
set obj.Value="cc"
do list.Insert(obj)
for i=1:1:list.Size
{
w list.GetAt(i).Value,!
}
quit 0
}
}
JSON中包含多层对象时使用
set arrayObject=##class(%ArrayOfObjects).%New()
set obj=##class(Sample.Test).%New()
s status= arrayObject.SetAt(obj,"first")
write arrayObject.Count(),!
wirte arrayObject.GetAt("first")
s array={}
s array={}.%FromJSON(jsonStr)
// 旧版:
s obj=##class(Nur.JSON).Decode(str)
s value=obj.GetAt(“a”)
set obj.PatName=patName
set obj.RegNo=regNo
set str=obj.%ToJSON()
// Cache 2016以前版本:
set str=##class(Nur.JSON).Encode(obj)