0

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

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

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

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

4

2 回答 2

3

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

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

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

Console.WriteLine(anonymousObject.name);

其他序列化器替代品:JavaScriptSerializer、DataContractJsonSerializer .......

于 2013-04-18T19:05:01.213 回答
2

波纹管代码应该做你正在寻找的(我测试过):

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);
于 2013-04-18T18:52:53.763 回答