我有一个结构,它是顶层的对象,主要包含字符串作为值和一个嵌套对象。它看起来应该像这样:

{
  "name" : "expand",
  "type" : "2",
  "code" : "...",
  "options" : {
     "atb" : {
         "description" : "..",
         "value" : true
     }
}

我猜测是因为JSObject拥有键/值对的列表,所以无法在同一级别上混合不同的值类型。这似乎是一个很大的限制,所以我希望我错了!

最佳答案

Text.JSON允许您嵌套对象,如the type definition所示:

data JSValue
    = JSNull
    | JSBool     !Bool
    | JSRational !Rational
    | JSString   JSString
    | JSArray    [JSValue]
    | JSObject   (JSObject JSValue)

newtype JSObject e = JSONObject { fromJSObject :: [(String, e)] }

类型是递归的-JSValues可以是JSObjects,而JSObjects可以是JSValues的字典。

10-08 12:37