当前位置: 首页 > 面试题库 >

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

郝哲茂
2023-03-14
问题内容

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

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

当我尝试使用进行反序列化时JsonConvert.DeserializeObject<>,它将引发异常。

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

我正在考虑遍历字符串并匹配“级别0”的花括号。这似乎是个好主意吗?还是有更好的方法来做到这一点?


问题答案:

您可以JsonTextReaderSupportMultipleContent标志设置为true来使用a
来读取此非标准JSON。假设您有一个如下所示的类Person

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<Person>(reader);
            Console.WriteLine(p.Name);
        }
    }
}

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



 类似资料:
  • 上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。

  • 问题内容: 我得到了这样的格式的字符串: 因此从根本上讲,它是演员姓名的列表(可选地,后面是他们在括号中的角色)。角色本身可以包含逗号(演员的名字不能,我强烈希望如此)。 我的目标是将此字符串分成成对的列表- 。 一个明显的解决方案是遍历每个字符,检查是否出现,并在出现逗号时将其拆分。但这似乎有点沉重… 我正在考虑使用正则表达式拆分它:首先用括号将字符串拆分: 这里的奇数元素是演员名称,甚至是角色

  • 问题内容: PHP字符串文字中的(花括号)是什么意思? 问题答案: 这是字符串插值的复杂(弯曲)语法。从手册中: 复杂(卷曲)语法 之所以称其为“复杂”,是因为语法复杂,而是因为它允许使用复杂的表达式。 可以通过此语法包括具有字符串表示形式的任何标量变量,数组元素或对象属性。只需以与出现在字符串外部相同的方式编写表达式,然后将其包装在和中即可。由于无法转义,因此仅在紧随其后的才会识别此语法。使用

  • 我需要解析一个日志文件并获取时间和相关的函数调用字符串,该字符串存储在日志文件中,如下所示:{“time”:“2012-09-24t03:08:50”,“message”:“call()started”} 在其他字符串字符之间会有多个日志时间函数调用,因此我希望使用regex来遍历文件并获取所有这些 我想获取整个记录的信息,包括花括号 我不断得到非法重复错误,请帮助!谢了。

  • 我有一个值,如下所示 如何编写一个正则表达式来捕获由逗号分隔的元素,而逗号不在双引号、方括号或花括号内?我想通过做下面的事情来匹配和获取元素;使用模式匹配。 元素应该是, 如果字符串如下所示 那么元素应该是

  • 问题内容: 我有一个像这样的字符串: 上面的字符串应分为: 问题答案: 我认为最简单的解决方案是处理输入字符串char-by-char: 例: 作为免费赠品,此解决方案还根据需要计算嵌套括号: 它还检查括号是否平衡(每个开放的括号都有相应的结束符)。