2012-07-23 64 views
0

我正在构建一个问卷构建器,其中一些问题的答案可能导致后续问题。下一步是序列化这些数据并将其处理成SQL查询。虽然我使用jQuery,我不认为serializeArray()复杂到足以序列化就是我想要的数据,这将是这样的:使用对象作为键

Answer = { 
    'text': String, 
    'default': String, 
    'img_path': String 
} 

Question = { 
    'type': String, 
    'text': String, 
    'followups': { 
     Answer : [Question, Question, ...], 
     Answer : [Question], 
     Answer : [] 
    } 
} 

我遇到的问题是,当我尝试使用Answer对象作为'followups'映射中的键 - 当我使用JSON.stringify()时,不是将键串化,而是将其作为[object Object]输出。

编辑:

字符串化的关键是要保持数据的一种方法,但后来也有一些讨厌的逃逸,如

"followups": { 
    "{\"text\":\"asdfasdfa\"}": [] 
} 

这将是很好的解决这个问题,但我打开任何建议,以更好的方式序列化这种形式。

+1

在JSON对象的关键只能是做出来的字符串。您可以尝试添加另一个答案对象(使用ID或其他)并使用Answer id来构建后续动作 – yoavmatchulsky 2012-07-23 16:37:14

回答

1

你可能需要稍微修改您的数据结构,类似这样的东西:

Question = { 
    'type': String, 
    'text': String, 
    'followups': [ 
     { 
      answer : Answer, 
      questions : [Question, Question, ...] 
     }, 
     { 
      answer : Answer, 
      questions : [Question] 
     }, 
     { 
      answer : Answer, 
      questions : [] 
     } 
    ] 
} 
+0

在这种情况下,Question.followups应该是一个数组,而不是对象 – yoavmatchulsky 2012-07-23 16:39:48

+0

@yoavmatchulsky您是正确的,先生。 – scottm 2012-07-23 16:40:24

+0

http://stackoverflow.com/questions/882727/is-a-way-that-use-var-to-create-json-object-in-key 我解释说,能够使用任何类型的变量作为一个关键;但感谢您的帮助! – actaeon 2012-07-23 16:42:39

相关问题