假设我有一个看起来像这样的字符串......
string s = "{ \"id\": \"1\", \"name\" : \"Test\" } has other text in the same string";
在C#中有没有办法在将字符串分开时将文本的JSON部分提取为自己的“标记”?
目标很简单。在包含文本和可能是JSON对象的字符串中,我只是想尝试将文本与JSON分开,以便我可以将其中一个传递给适当的工具。不需要反序列化,不需要验证,也不需要将JSON文本转换为对象。我只是想把文字拉出来。
答案 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);