当前位置: 首页 > 知识库问答 >
问题:

行为奇怪的Json空数据

秦城
2023-03-14
    render ( ['P' : jsonObject.picId, 'A' : jsonObject.audioId, 'C' : jsonObject.caption, 'V' : jsonObject.vidTemplateId ] as JSON)
def vidpNmList = [][]
vidpNmList[0] = jsonObject.picId
vidpNmList[1] = jsonObject.audioId
vidpNmList[2] = jsonObject.caption
def vsaInst = vdSlotService.storeVideoSlotData( vidpNmList, session)
def picId = vidpNmList[0]
def audioId = vidpNmList[1]
def caption = vidpNmList[2]

当标题[currSlotNo]的值为空时,该行将导致错误:

if(!(caption[currSlotNo]) ) {
    log.debug(" caption is null and cannot be displayed. ")

}

HomeVu1.VdslotService updVideoSlotData pictureInst:331 Picid[currSlotNo]:331 HomeVu1.VdslotService updVideoSlotData Picmk:331

HomeVu1.VdslotService updVideoSlotData audmk:null

错误.处理请求时发生GrailsExceptionResolver JSONException:[POST]/HomeVu1/VideoShr/GetJSVidCoords

找不到JsonArray[0]..Stacktrace如下:org.codehaus.groovy.grails.web.json.JSONException:找不到JSONArray[0]。

如果引用vidpNmList数组中元素的值,也会出现相同的错误。

我做错了什么,或者是周围有一些工作?

        def captionVal = null
        try{ captionVal = caption[currSlotNo] 

            log.debug(" ${functionName} caption value assigned correctly ")
        }
        catch (Exception eWrite)
        {       
            //      fails - can only trap and work around the error atm.
                log.debug(" ${functionName} caption value fails to assign correctly - remains at null default - Error Message: $eWrite")                                
        }

显示将json对象标题元素从“null”字符串重置为实际的null后再分配给vidpnmlist的代码:

        for (def iC = 0; iC < jsonObject.caption.size() ; iC++)
        {
            String currCap = jsonObject.caption[iC]
            if( currCap == "null") 
            {
                log.debug(" getJsVisCoords null value iC: $iC " + " caption[iC]: " + jsonObject.caption[iC] + " currCap Length: " + currCap.length())
                jsonObject.caption[iC] = null
            }
            else
            {
                log.debug(" getJsVisCoords Non null value iC: $iC " + " caption[iC]: " + jsonObject.caption[iC] + " currCap Length: " + currCap.length())
            }

        }
        vidpNmList[2] = jsonObject.caption

-迈克

共有1个答案

谢锦程
2023-03-14

不确定JSON在此场景中的作用,但看看上面的代码,您有其他选择:

直到您将这些列表收集为标题audioId picId时为止

def picId = vidpNmList[0]
def audioId = vidpNmList[1]
def caption = vidpNmList[2]

您显示了一个接近于以下内容的输出:

def picId=[331, 332, 334, null, null, null, null, null, null, null, null, null]
    def audioId=[null, null, null, null, null, null, null, null, null, null, null, null]
    def Captions=[null, 333, 333, null, null, null, null, null, null, null, null]

现在这是我玩的名单:

    / you are current failing on this
    def pic=picId[0]


    //instead of above element[id] try .get(id)
    def cap=Captions.get(2)
    println "--- ${pic} @@@ ${cap}"

    //Then you can test by saying 
    if (cap&&something&&somethingEls) { 
        doSomething
    }

我回来了

--- 331  @@@ 333
  for (def iC = 0; iC < jsonObject.caption.size() ; iC++)
int iC=0
for (iC < jsonObject.caption.size() ; iC++) {
jsonObject?.caption?.eachWithIndex{ item, i ->
   if (JSONObject.NULL.equals(item) { 
      item=null
   } 
}
vidpNmList[2] = jsonObject.caption
def finalList=[]
jsonObject?.caption?.eachWithIndex{ item, i ->
   if (JSONObject.NULL.equals(item) { 
      item=null
   } 
  finalList << item
}
vidpNmList[2] = finalList
jsonObject?.caption?.each{ item ->
   if (JSONObject.NULL.equals(item) { 
      item=null
   } 
}
vidpNmList[2] = jsonObject.caption
if (!item ||(item && item=='null')) { 
 item=null
}
 类似资料:
  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 为什么我得到一个空的输出?当我删除xml中的xmlns部分时,输出是预期的,但是intellisense不再工作了。 仓库xml 仓库xsl

  • 问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么

  • 问题内容: 我正在为一个问题而苦苦挣扎,我不明白为什么它不起作用。如何通过将变量传递并转换为? 为什么在顶部代码段中不起作用,但在行下方的底部代码段中起作用? 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为? 问题答案: 该是一种原始类型,同时是一个普通的Java类。您不能在原始类型上调用方法。但是该方法在上可用,如javadoc中所示 有关这些原始类型的更多信息,请参见此处

  • 问题内容: 为什么的到哪里去了? 问题答案: 删除任何字符,并从字符串的开头和结尾。

  • 问题内容: 我认为这是一个正常程序,但这是我得到的输出: 有人可以向我解释一下吗? 问题答案: 这是有据可查的PHP行为,请参阅php.net的foreach页面上的警告。 警告 即使在 foreach 循环之后,仍保留 $ value的 引用和最后一个数组元素。建议通过unset()销毁它。 __ 编辑 尝试逐步了解此处实际发生的情况