【问题标题】:How to split json string in c# and store in separate variables如何在c#中拆分json字符串并存储在单独的变量中
【发布时间】:2017-01-06 07:17:23
【问题描述】:

我想用 c# 分割下面的字符串

string clnt_metadata="{itc:ITC}{id:56}"

我想要这样的输出:

string itc="ITC"
string id="56"

【问题讨论】:

标签: c# json string split


【解决方案1】:

如上一个答案所述,如果您的 json 是有效的 json,最好的选择就是反序列化它。如果它不是 json,而只是类似的字符串,具有与您描述的完全相同的结构,您可以这样解析它:

var parts = clnt_metadata.Split(new string[] {"}{"}, StringSplitOptions.RemoveEmptyEntries)
       .Select(s => s.Trim('{', '}'))
       .Select(s => s.Split(':'))
       .ToDictionary(s => s[0], s => s[1]);

结果如下:

【讨论】:

  • 这个答案,虽然它可能有效,但有点脆弱,因为它取决于在右大括号和左大括号之间没有任何空格 (}{)
【解决方案2】:

使用var obj = JsonConvert.DeserializeObject<objectName>(clnt_metadata)

public class objectName
{
   public string ITC {get; set;}
   public string id {get; set;}
}

【讨论】:

  • @J Alcantara 使用您的代码会发生此异常{"Error parsing Infinity value. Path 'itc', line 1, position 6."}
  • 那是因为你的字符串是无效的Json。必须是{itc:"ITC"}
  • 那么如何将指定的字符串转换成json然后读取并拆分得到上面提到的输出
  • 正确的JSON格式一定是这样的: { "itc":"ITC", "id":"56" } 那么就可以简单的调用obj.ITC和obj.id
【解决方案3】:
line = reader.ReadLine();
while (line != null)
{
    string[] words = JsonSplitString(line);
    string json = words[1];
    writer.WriteLine("{0}", json);
    line = reader.ReadLine();
}

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2017-08-19
    • 1970-01-01
    • 2015-10-21
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2022-01-12
    相关资源
    最近更新 更多