SQL查询数据转Json格式处理

点 赞
1
热 度
127
评 论
0
  1. 首页
  2. Intersystem IRIS
  3. 基础Cache
  4. SQL查询数据转Json格式处理

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
}


余乃云水散人,栖于数字之墟。性耽幽静,常以青简为田,墨痕为穗。晨起推窗,听松风煮茶;夜阑掩卷,伴竹影扫阶。此间筑小筑三椽,藏闲话若干:或遇史海遗珠,则录以素札;偶得诗瓢碎玉,便缀作清吟。往来皆烟霞客,谈笑有鸿儒踪。诸君若得暇,不妨暂驻云履,共品一盏烟岚,半卷春秋。

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。

目录

欢迎来到南鸢宸羲的站点,为您导航全站动态

174 文章数
38 分类数
4 评论数
47标签数
最近评论
七斗牛

七斗牛


6666