【问题标题】:Add quotes to a string to make it JSON in C#在 C# 中将引号添加到字符串以使其成为 JSON
【发布时间】:2020-01-23 12:42:58
【问题描述】:

我正在使用使用 JSON 格式的服务。

但是我从哪里得到 JSON 不包含键和值的双引号。

这是我拥有的数据的示例

[{name:{buyerfirstname:Randy, buyermiddlename:null, buyerlastname:Johnson}, buyerfullname:Randy Johnson, businessname:null}]

如何在 C# 中将其转换为 JSON

注意:null 不应包含双引号

【问题讨论】:

  • 如果属性名称和字符串值没有被引用,则不是 JSON。
  • 所以buyerfullname 只是被倾倒在那里,空白和所有?这是什么服务……?
  • 您(或您的 Web 服务)将 Javascript 文字对象与 JSON 混淆
  • @Pac0 甚至不是
  • 您应该修复或取消服务,这取决于两者中的哪一个是可能的。

标签: javascript c# typescript .net-core json.net


【解决方案1】:

所以,我在玩弄你的字符串,并且基于你的字符串格式不正确的 cmets,所以我设计了一种使用 Regular Expressions 的方法来解析有问题的字符串中的数据。请在下面找到我尝试的代码和一个工作示例:https://dotnetfiddle.net/XLSde4

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
         string str = "[{name:{buyerfirstname:Randy, buyermiddlename:null, buyerlastname:Johnson}, buyerfullname:Randy Johnson, businessname:null}]";
         showMatch(str, @"(?<=[:,])(.*?)(?=\}[,\]])");
    }

     private static void showMatch(string text, string expr) {
         MatchCollection mc = Regex.Matches(text, expr);
         string[] matches=new string[10000];
         foreach (Match m in mc) {
            string tailored=m.Value.Trim().Replace("{","");
            matches = Regex.Split(tailored, ","); 
            for(int i=0;i<matches.Length;i++)
            {
                Console.WriteLine(matches[i].ToString().Trim());
            }   
         }
      }
}

输出:

buyerfirstname:Randy
buyermiddlename:null
buyerlastname:Johnson
buyerfullname:Randy Johnson
businessname:null

我希望这可以帮助你,或者至少给你一个从某个地方开始的方向。

【讨论】:

  • 感谢您的努力。需要一些调整,但至少得到了一些帮助
  • @mohammedzaid 很高兴听到这个消息。
猜你喜欢
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2019-06-03
  • 2015-06-10
  • 2021-12-16
相关资源
最近更新 更多