1、定义属性对象,并设置全局Json格式化

Property JsonObj;

Method %FromJSON(jsonstr As %String)
{
	s ret=0
	s i%JsonObj={}
	q:jsonstr="" ret
	try{
	s i%JsonObj={}.%FromJSON(jsonstr)
	}catch{s ret=-100}
	q ret
}

2、根据Rowid查询单条数据,并格式化为Json,也可以称作用sql查询并将sql查询结果转为Json。

/// Description: 入参为表名和要查的rowid
ClassMethod TableToJson(SqlTableName, RowId)
{
	s existIsListProperty = ##class(%Dictionary.CompiledProperty).%ExistsId("%SQL.StatementColumn||isList")
	
	s retJson = {}
	s sqlStr = "SELECT * FROM "_SqlTableName_" where %ID = '"_RowId_"'"
	s sqlStatement = ##class(%SQL.Statement).%New()
	s sqlStatus = sqlStatement.%Prepare(sqlStr)
	s sqlResult = sqlStatement.%Execute()
	s columns = sqlStatement.%Metadata.columns
	s colSize = columns.Size
	while (sqlResult.%Next()){
		for i = 1 : 1 : colSize {
			s colName = columns.GetAt(i).colName
			s colData = sqlResult.%Get(colName)
			if (existIsListProperty = 1)&&(columns.GetAt(i).isList = 1){
				s colData = $lts(colData)
			}
			d retJson.%Set(colName, colData)
		}
	}
	q retJson.%ToJSON()
}

3、加一层保险,数据经过验证未json化处理成json

/// Description: 转Json对象,如果已经是对象则直接返回
ClassMethod Parse(pData)
{
	q:$IsObject(pData) pData
	if ($e(pData,1)="["){
		s pObj=##class(%DynamicArray).%New()
	}else{
		s pObj=##class(%DynamicObject).%New()
	}
	s json=pObj.%FromJSON(pData)
	q json
}