1

View我在解析 JSON 文件的方法中有以下代码。该方法以整数形式ContentsOfDictionary接受参数dXojo.Core.Dictionary并返回文本。如果我在操作按钮中使用,我会收到此错误:level
ContentsOfDictionary

error: Not Enough arguments: got 0, expected at least 1

这是我正在使用的测试文件的链接。
我如何调用该方法ContentsOfDictionary

 dim dict as Xojo.Core.Dictionary = Xojo.Data.ParseJSON (kJsonData)
   const kEOL = &u0A

  dim indent as text
  for i as integer = 1 to level
    indent = indent + " "
  next
  dim t as text
  for each entry as Xojo.Core.DictionaryEntry in dict
    t = t + indent + entry.Key + " "
    if Xojo.Introspection.GetType( entry.Value ) is nil then
      t = t + "nil" + kEOL
    else
      select case Xojo.Introspection.GetType( entry.Value ).Name
      case "Boolean"
        t = t + if( entry.Value, "true", "false" ) + kEOL
      case "Text"
        t = t + entry.Value + kEOL
      case "Int32", "Int64"
        //
        // You get the idea
        //
      case "Dictionary"
        t = t  + kEOL + ContentsOfDictionary( entry.Value, level + 1 )
      end select
    end if
  next
  return t
4

1 回答 1

2

更新:以下内容均不适用,因为@johnnyB 的示例是ContentsOfDictionary函数,不应该尝试访问 JSON 数据,而只是处理提供的Dictionary. 下面的评论中有一个固定测试项目的链接。


它失败了,因为您不满足任何ContentsOfDictionary签名的参数类型。

entry.Value是 type Auto,因此在调用之前,ContentsOfDictionary您需要复制entry.Value到 aDictionary并将其传递给函数。

例如...

    ...
    case "Dictionary"
        dim d as new Xojo.Core.Dictionary = entry.Value
        t = t  + kEOL + ContentsOfDictionary( d, level + 1 )
end select
于 2015-04-21T21:58:40.423 回答