解析.net中的hstore列

时间:2013-03-05 23:58:50

标签: c# .net postgresql

我想知道在.net中检索和处理hstore数据的最佳方法是什么。

如果我执行基本查询,那么它将输出以这种方式格式化的字符串:

"key1" => "value1", "key2" => "value2"

看起来像我今天解析的KeyValuePair一样:

SimpleJson.SimpleJson
.DeserializeObject<Dictionary<string, string>> ("{" + tags.Replace ("=>", ":") + "}");

我可以手动执行以下操作:

  • 先拆分“,”
  • 然后循环并用“=&gt;”分开
  • 然后提取左键和右键值

但是,如果在值内部有一个“,”或者在值内部有一个完整的元素,我应该进行递归解析吗?并且有关于解析字符串的所有问题:)

你认为比Json的技巧更好吗?

1 个答案:

答案 0 :(得分:0)

您有几个选择。我不能说是否有比现在更好的东西。我的建议实际上是在测试版开始测试9.3并考虑将代码移到那里。 9.3的hstore有一个转换为json,所以你可以在db中执行它。这可能是计划成为早期采用者的一个很好的理由。实质上在9.3中,您将能够:

SELECT my_hstore::json FROM mytable;

第二种可能性是你可以在PostgreSQL的内存中创建一个结构(对于9.1和9.2中现有的受支持版本),将你自己的转换编写到json。有关如何操作的见解,请参阅下面的安德鲁博客。

第三种可能性是使用XML的现有功能并编写XML转换。这是fairly easy。通过简单的功能,您可以轻松地执行以下操作:

SELECT my_hstore :: xml FROM mytable;

最后的可能性是在.net中进行字符串解析。这是我最不了解的领域,但我也建议它是最后的选择,因为与其他人一样,你可以直接访问hstore数据接口,也因为你将使用的所有函数都有相对紧张的合同和许多其他用户。