使用匹配的花括号拆分字符串的最佳方法

我正在使用C#,我正在使用JSON.Net将json字符串解析为C#对象。 我的部分问题是我得到了一些像这样的字符串:

{"name": "John"}{"name": "Joe"} 

当我尝试使用JsonConvert.DeserializeObject反序列化时,它会抛出exception。

我想知道将这个更大的字符串拆分成更小的json字符串的最佳方法是什么。

我正在考虑通过字符串和匹配“0级”的花括号。 这看起来是个好主意吗? 或者有更好的方法来做到这一点?

您可以使用将SupportMultipleContent标志设置为true的JsonTextReader来读取此非标准JSON。 假设你有一个看起来像这样的类:

 class Person { public string Name { get; set; } } 

您可以像这样反序列化JSON对象:

 string json = @"{""name"": ""John""}{""name"": ""Joe""}"; using (StringReader sr = new StringReader(json)) using (JsonTextReader reader = new JsonTextReader(sr)) { reader.SupportMultipleContent = true; var serializer = new JsonSerializer(); while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { Person p = serializer.Deserialize(reader); Console.WriteLine(p.Name); } } } 

小提琴: https : //dotnetfiddle.net/1lTU2v

我发现最好的方法是将您的字符串转换为数组结构:

 string json = "{\"name\": \"John\"}{\"name\": \"Joe\"}"; json = json.Insert(json.Length, "]").Insert(0, "[").Replace("}{", "},{"); // json now is [{"name": "John"},{"name": "Joe"}] List result = Newtonsoft.Json.JsonConvert.DeserializeObject>(json); 

假设您的class级名称是Person

 public class Person { public string Name { set; get; } }