如何使用sbt JsonNavigator

时间:2012-03-26 12:20:54

标签: xpages

我有JSON文本,如下所示:

{
  "ok": true,
  "totalPages": 256,
  "arReports": {
    "r2807328": {
      "marchReportId": "2807328",
      "reportUnixTime": "1332742728",
      "marchTypeState": "1"
    },
    "r2804256": {
      "marchReportId": "2804256",
      "reportUnixTime": "1332722319",
      "marchType": "4",
      "marchTypeState": "1"
    }
  },
   "arOtherNames": {
    "a455": "JL",
    "a44": "CCCP",
    "a796": "Waffenstudenten"
  }
}
然后我做了:

var objGW = eval('(' + s + ')');
var d = new sbt.JsonNavigator(objGW);

如何获取报告ID列表(r2807328等),然后获取相应的marchReportId?

我尝试过d.stringValues('arReports')和d.stringValues('arReports / marchId'),但是我没有得到文本或数组的值?我做错了什么?

2 个答案:

答案 0 :(得分:0)

我相信你错过了使代码成为对象的方括号 看这里例如 - > http://www.w3schools.com/json/default.asp

答案 1 :(得分:0)

它通过验证器,所以我不认为它是无效的json。您可以将arreports的属性作为关联数组进行访问。在客户端使用json时,您可以执行以下操作以按键检索第一个元素

d.arReports["r2807328"]

这将返回具有给定键的arReports对象。如果你想使用一个属性,你应该使用

d.arReports["r2807328"].marchTypeStatus

如果您想使用jsonnavigator类在服务器端执行此操作,可以使用以下语法

var d = new sbt.JsonNavigator(json);
d.stringValues('arReports/r2807328') 

var d = new sbt.JsonNavigator(json);
d.stringValues('arReports/r2807328/marchTypeStatus') 

进一步参考以下链接

SBT Demo