【问题标题】:Convert invalid JSON string with single or no quotes转换带单引号或不带引号的无效 JSON 字符串
【发布时间】:2017-02-08 22:19:22
【问题描述】:

我有一个无效的 json 字符串,例如,

"{StateName: { before: 'AA',  after: 'AAA'} },"

谁能帮助使用正则表达式用有效的 JSON 数据替换无效字符串?我需要跳过最后的逗号并用双引号替换单引号或在缺少的地方添加双引号。

提前致谢。

【问题讨论】:

  • @Arti 我已经尝试对单个属性值执行此操作,例如 string str = "{StateName: { before: 'AA', after: 'AAA'} }," Regex.Replace(str , @"(^|\s)之前:(\s|$)", "\"之前\":");
  • @Arti,所以我想知道是否有任何方法可以进行多个无效字符串替换。

标签: c# json regex


【解决方案1】:

使用 string.Replace()

jsonString = jsonString.Replace("'", "\"");
jsonString = jsonString.Replace("},", "}");

【讨论】:

  • 如果属性名称中缺少双引号怎么办?就像在这种情况下 StateName
【解决方案2】:

只需在 json 字符串上使用 DeserializeObject()

string json = "{\"StateName\": { "\before\": "\AA\",  "\after\": "\AAA\"} }";

然后

object jsondata = JsonConvert.DeserializeObject(json.ToString());

【讨论】:

  • 我拥有的字符串不是有效的 JSON 格式。所以我不能使用 DeserializeObject()
  • 我相信@princeofmince 建议如果您的 StateName 是静态的,那么您可以 jsonString = jsonString.Replace("StateName", "\"StateName\"");但是如果想知道如何将这种类型的响应字符串作为 json 处理?
猜你喜欢
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多