2013-03-05 35 views
1

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

如果我做一个基本的查询,然后它会输出一个字符串格式化的那样:

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

看起来都KeyValuePair我今天解析这样的:

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

我可以手动做类似的事情:

  • 先用“,”
  • 然后循环和分离与“=>”
  • 然后提取左键和右重视

不过,要是有一个“”一个值或一个完整的元素内内值,我应该做一个递归解析?并继续所有关于解析字符串的问题:)

你看到比Json的伎俩更好的方法吗?

+0

你的JSON技巧也有一个问题:如果其中一个键或值包含'=>'序列会怎么样?手工操作并不复杂。没有层次/递归,所以它只是一个带有状态的循环(inValue,inKey等) – 2013-05-05 06:53:33

回答

0

你有几个选择。我不能说任何比你现在拥有的都好。我的建议实际上是在beta测试版本9.3开始并开始在那里移动你的代码。 9.3的hstore有一个转换为json,所以你可以在db中完成。这可能是计划成为早期采用者的一个很好的理由。在9.3本质上,你将只能够:

SELECT my_hstore::json FROM mytable; 

第二种可能性是,你可以在内存中的PostgreSQL创建一个结构(现有支持版本在9.1和9.2)编写自己投以JSON 。有关如何操作的信息,请参阅下面的Andrew博客。

第三种可能性是使用XML的现有功能并编写XML转换。这是fairly easy。使用一个简单的函数,你可以轻松地做一个:

SELECT my_hstore :: xml FROM mytable;

最后的可能是在.net中做字符串解析。这是我最不了解的领域,但我也建议这是大部分的最后选择,因为与其他人一样,您可以直接访问hstore数据接口,并且因为您将使用的功能都有相对较紧的合同以及其他许多用户。