色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

el表達式取json字符串出錯

錢斌斌2年前7瀏覽0評論

當我們使用el表達式從json字符串中取得數據時,常常會遇到一些錯誤。接下來我們就來看看一些常見的錯誤以及如何解決它們。

1. 錯誤提示“Cannot convert undefined or null to object”

<c:forEach items="${jsonObject.items}" var="item">
<span>${item.name}</span>
</c:forEach>

出現這個錯誤的原因是因為jsonObject對象中沒有items屬性。我們可以通過判斷jsonObject是否為空來解決這個問題。

<c:if test="${not empty jsonObject}">
<c:forEach items="${jsonObject.items}" var="item">
<span>${item.name}</span>
</c:forEach>
</c:if>

2. 錯誤提示“Unexpected character (''' (code 39))”

<c:set var="jsonStr" value="{'name': 'Jack', 'age': 25}" />
<c:set var="jsonObject" value="${fn:replace(jsonStr, '''', '\'')}" />

出現這個錯誤的原因是在json字符串中使用了單引號。解決方法是將json字符串中的單引號轉義成反斜杠加單引號。

<c:set var="jsonStr" value="{'name': 'Jack', 'age': 25}" />
<c:set var="jsonObject" value="${fn:replace(jsonStr, ''', '\\'')}" />

3. 錯誤提示“javax.el.PropertyNotFoundException: Property 'xxx' not found on type java.lang.String”

<c:set var="jsonStr" value="{'name': 'Jack', 'age': 25}" />
<c:set var="jsonObject" value="${fn:replace(jsonStr, ''', '\\'')}" />
${jsonObject.name}

出現這個錯誤的原因是因為從json字符串中取得的數據類型為String,而不是jsonObject類型。我們需要先將json字符串轉換成jsonObject類型。

<c:set var="jsonStr" value="{'name': 'Jack', 'age': 25}" />
<c:set var="jsonObject" value="${fn:replace(jsonStr, ''', '\\'')}" />
<c:set var="jsonObject" value="${#servletContext.getAttribute('org.apache.struts2.json.JSONUtil.out').deserialize(jsonObject)}" />
${jsonObject.name}

通過以上幾個例子,我們可以發現,在使用el表達式取得json字符串的數據時,往往要考慮到一些特殊情況,才能順利地取得數據。