从C#中的序列化字符串中提取JSON对象

时间:2013-04-18 18:47:19

标签: c# json

假设我有一个看起来像这样的字符串......

string s = "{ \"id\": \"1\", \"name\" : \"Test\" } has other text in the same string";

在C#中有没有办法在将字符串分开时将文本的JSON部分提取为自己的“标记”?

目标很简单。在包含文本和可能是JSON对象的字符串中,我只是想尝试将文本与JSON分开,以便我可以将其中一个传递给适当的工具。不需要反序列化,不需要验证,也不需要将JSON文本转换为对象。我只是想把文字拉出来。

2 个答案:

答案 0 :(得分:3)

当你处理json时,使用真正的json解析器,如Json.net。正则表达式不足以处理所有极端情况。

例如,假设一个包含[的字符串字段,并使用Garath的答案。 Booom。

string s = "{ \"id\": \"1\", \"name\" : \"Test\" }";
var anonymousObject = new { id = 0, name = "" };
anonymousObject = JsonConvert.DeserializeAnonymousType(s, anonymousObject);

Console.WriteLine(anonymousObject.name);

其他Serializer替代品:JavaScriptSerializer,DataContractJsonSerializer .......

答案 1 :(得分:2)

Bellow代码应该做你想要的(我测试过):

string s = "{ \"id\": \"1\", something:{xx:22, yyy: \"3\"}, \"name\" : \"Test\" } has other text in the same string";
var regexp = new Regex("([{].+[}])");
var match = regexp.Match(s);