递归 json java_Json对象的无限递归问题(使用Java/Javascript)

在使用Javascript/Java查询MSSQL数据库并处理CachedRowSet结果时,遇到Json对象无限递归的问题。当将变量Mapping赋值为查询结果时,遍历Json对象时陷入无限循环,循环于'class'、'package'和'specificationVersion'。问题出现在将`variableMapping`对象赋值给`jsonArray["Segments"][seg]["Variables"][variableName]["Mapping"]`时,而如果使用静态字符串则不会出现问题。
摘要由CSDN通过智能技术生成

我正在使用Javascript/Java查询MSSQL数据库,然后使用从查询接收的CachedRowSet向Json对象添加一些信息。以下是查询数据库并将结果添加到对象的代码。Json对象的无限递归问题(使用Java/Javascript)

var sqlGetVariables = "SELECT MappingVariable.Id as Id, MappingVariable.Name AS Name, MappingVariable.Value AS Value FROM MappingGroup LEFT JOIN MappingVariable ON MappingGroup.Id = MappingVariable.MappingGroupId WHERE MappingGroup.Id = " + mappingGroupId + " AND MappingVariable.Id IS NOT NULL";

var resultVariables = uberfaceDB.executeCachedQuery(sqlGetVariables);

while (resultVariables.next()) {

var variableId = resultVariables.getObject("Id");

var variableName = resultVariables.getObject("Name");

var variableMapping = resultVariables.getObject("Value");

jsonArray["Segments"][seg]["Variables"][variableName] = {};

jsonArray["Segments"][seg]["Variables"][variableName]["Mapping"] = variableMapping;

}

我遇到的问题是,有一个与最后一行回事愚蠢的东西,我分配“variableMapping”的JSON对象。该代码行执行得很好,但是当我稍后继续遍历Json对象时,我陷入了无限递归中,该循环通过“class”“package”和“specificationversion”循环。

下面是我用来遍历对象的代码。

function echoJson (jsonArray, strStuff) {

var strJson = "" + strStuff;

for (var item in jsonArray) {

logger.error(strJson + " --> " + item);

echoJson(jsonArray[item], strJson + " --> " + item);

}

}

logger.error函数内置于我正在编写的应用程序(称为Mirth Connect)中。它只是将消息输出到控制台以用于错误/调试目的。这里是什么,我会希望获得与echoJson函数的一个例子:

Segments --> MSH --> Segments --> PID --> Variables --> PatientFirstName --> Mapping --> variableMappingValue

但这里是我真的开始:

Segments --> MSH --> Segments --> PID --> Variables --> PatientFirstName --> Mapping --> class --> package --> specificationVersion --> class --> package --> specificationVersion --> class --> package --> specificationVersion...

它不断重复的“类 - >包装 - > specificationVersion“部分,直到我停止应用程序。

如果我替换下面的代码行:

jsonArray["Segments"][seg]["Variables"][variableName]["Mapping"] = variableMapping;

用一个硬编码字符串,如

jsonArray["Segments"][seg]["Variables"][variableName]["Mapping"] = "test";

然后它没有任何问题。

预先感谢您看看这个!

2015-07-09

TACHEON

+0

为什么这个标记为java?并且不应该使用您用来访问数据库的任何JavaScript库进行标记? –

+0

它被标记为Java,因为根据我上面的评论,有一些Java被利用。尽管它大部分都是在数据库调用的幕后,但我的问题中的主要组件之一是Java的CachedRowSet,这是SQL结果存储在其中的结果(resultVariables对象)。至于添加库,我已经添加了Mirth,这是我在做这个编码的软件。它有它自己的专有JavaScript库,它是其他Java库的顶层,但我不知道哪个那些。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值