【问题标题】:how to loop over a property of type array of object如何循环对象数组类型的属性
【发布时间】:2014-10-29 16:32:06
【问题描述】:

我是一个完全节奏的新手,但被困在我的一个简单测试中(在这里测试:http://fiddle.rythmengine.com/

我想用一个简单的例子来解释这个问题是最容易的:

我的 JSON 输入参数:

{myObj: 
 {name: "test", values: [ {id: 1}, {id: 2} ]
 }
}

所以 values 属性是一个对象数组 - 这些对象只有一个属性 id

我的测试模板:

@args Object myObj
Hello @myObj.name@

@for (Object v: myObj.values) {
  @// this fails
}

这失败了:

org.rythmengine.exception.CompileException: values cannot be resolved or is not a field

这里有什么问题?

即在循环之外我可以访问 myObj.values

@args Object myObj
Hello @myObj.name@

@myObj.values@

【问题讨论】:

    标签: rythm


    【解决方案1】:

    您将myObj 声明为Object,它根本没有value 属性。

    解决方案:

    让你的 JSON 字符串看起来像:

    { 
    name: "test", values: [ {id: 1}, {id: 2} ]
    }
    

    您的模板代码:

    @args String name, Map[] values
    
    Hello @name@
    
    @for (Map v: values) {
      @v.get("id")
    }
    

    结果:

    Hello test
     1
     2
    

    http://fiddle.rythmengine.com/上测试

    【讨论】:

    • 我无法更改 JSON - 真正的 JSON 要复杂得多,我是从外部来源获取的。所以改写这个问题:“如何迭代给定 JSON 数据中的值”?如果可能的话...
    • 最好定义一个映射到您获得的 JSON 结构的类,然后使用该 java 类声明您的 Rythm 模板参数
    猜你喜欢
    • 2022-12-17
    • 2012-10-03
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多