我有一个结构,它是顶层的对象,主要包含字符串作为值和一个嵌套对象。它看起来应该像这样:
{
"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的字典。