如何在TMongoWire中创建JSON属性

时间:2013-09-23 08:22:59

标签: json delphi mongodb

在Delphi中,使用TMongoWire,我试图用可变数量的电话号码来保存公司资料。我希望得到的保存JSON看起来像:

{"ourID":"XYZ1", 
 "Company":"XYZ Company",
  "Phones": [{"number":"714-999-9999", "type":"business"},
             {"number":"714-987-6533", "type":"cell"}]
}

但我似乎无法弄清楚如何将手机送入MongoDB。我尝试为手机创建JSON,然后将其传递给Phones字段,但存储的是JSON字符串,而不是JSON数组。它看起来像:

"Phones":"[{\"Phone\":\"123-456-7890\", \"pType\":\"Home Phone\", \"notes\":\"this is the home phone\"}]"

有什么建议吗?

谢谢, 吉姆

2 个答案:

答案 0 :(得分:2)

我觉得它比它看起来容易。我刚刚使用了嵌套的BSON([])语句,它就像一个冠军。测试代码如下所示:

  b := BSON(['test','this is a test',
             'Phones', BSON(['number', '1234', 'number','54533'])]);

在MongoDB中生成的JSON是正确的。

答案 1 :(得分:2)

TMongoWire的BSON文档是围绕变体数组构建的,因此您可以使用Variants单元中的VarArrayOf函数来制作上述文档:

BSON(['ourID','XYZ1', 
  'Company','XYZ Company',
  'Phones',VarArrayOf([
    BSON(['number','714-999-9999', 'type','business']),
    BSON(['number','714-987-6533', 'type','cell'])
  ])]);