gpt4 book ai didi

json - json在grails中无法正常工作

转载 作者:行者123 更新时间:2023-12-02 14:59:58 26 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但我正在学习json。我有一个 View ,我在页面加载时将列表作为json传递。但鉴于我无法通过键来获取值(value)。谁能帮我这个忙。这是我在下面的尝试:

我的 Controller Action 以查看>>>

def jsonObjectCreation(){
def studentInfo = StudentInfo.getAll()
def students = new ArrayList<Map>()
studentInfo.each {
students.add([
id: it.id,
name: it.name,
address: it.address,
age: it.age
])
}
[studentInfo: students as JSON]
}

我的jsonObjectCreation View >>>
    <!DOCTYPE html>
<html>
<title>JSON Object</title>
<body>
<h2>JSON Object Creation in JavaScript</h2>
<p id="demo"></p>
<script>
var textResult = "";
var obj = "${studentInfo}";
alert("${studentInfo}");
for(var i in obj)
{
textResult += obj[i].id + " : " + obj[i].name + "<br>";
}
document.getElementById("demo").innerHTML = textResult;
</script>
</body>
</html>

警报显示此消息>>>
[{&quot;id&quot;:1,&quot;name&quot;:&quot;Sumon&quot;,&quot;address&quot;:&quot;Dhaka&quot;,&quot;age&quot;:18},{&quot;id&quot;:2,&quot;name&quot;:&quot;Bappi&quot;,&quot;address&quot;:&quot;Mirpur&quot;,&quot;age&quot;:17},{&quot;id&quot;:3,&quot;name&quot;:&quot;Saad&quot;,&quot;address&quot;:&quot;Dhaka&quot;,&quot;age&quot;:19}]

并且在 View ID和名称中未定义

最佳答案

By default, Grails plays it safe and escapes all content in ${} expressions in GSPs. All the standard GSP tags are also safe by default, escaping any relevant attribute values.



这就是为什么将双引号(“)转换为 &quot;的原因。要解决此问题,您可以通过将其设置为 config.groovy( Bad Idea )来完全删除html转义,或者在gsp端对其进行处理。

要在gsp方面进行处理:
  • 告诉Grails内容是安全的,应原始显示:${raw(studentInfo)}。使用${raw()}方法,您只能直接呈现内容。
  • 使用<g:javascript>标记编写内联脚本代码。但是它将从您的内容中删除所有不安全的html代码。因此,如果您在gsp页面上使用<g:javascript>alert("${studentInfo}");</g:javascript>,并且与某个键相对应的数据之一包含<script>alert(123);</script>StName,则此标记将从数据中删除脚本代码部分。除非您确实要渲染它,否则这对于XSS攻击确实很有帮助。
  • 使用以下命令手动在<script/>标记中转义引号:var obj = "${raw(studentInfo)}".replace(/&quot;/g, '"')。虽然这不会删除任何不安全的html,但是如果您的任何键或值包含双引号",它可能会中断。

  • 使用第二种或第三种方法将数据存储到javascript变量后,现在需要将数据解析为json对象。由于javascript变量不知道它是哪种数据。只需简单地执行 obj = JSON.parse(obj);之后,您就可以遍历json对象以获取键和值并继续您的逻辑。

    因此,使用 g:javascript代码将是:

    <g:javascript>
    var textResult = "";
    var obj = JSON.parse("${studentInfo}");
    for (var i in obj) {
    textResult += obj[i].id + " : " + obj[i].name + "<br>";
    }
    document.getElementById("demo_0").innerHTML = textResult;
    </g:javascript>

    关于json - json在grails中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648529/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com