C# 如何将JSON格式的纯文本转换为简单纯文本

C# 如何将JSON格式的纯文本转换为简单纯文本,c#,json,C#,Json,我有一个纯文本字符串,其中包含类似JSON格式的括号,因为它是使用JavaScriptSerializer.Serialize方法创建的。我需要删除方括号和collon,并希望将其转换为key=value,key=value格式。 需要转换 { "account":"rf750", "type":null, "amount":"31", "auth_type":"5", "balance":"2.95", "card":"re0724"

我有一个纯文本字符串,其中包含类似JSON格式的括号,因为它是使用JavaScriptSerializer.Serialize方法创建的。我需要删除方括号和collon,并希望将其转换为key=value,key=value格式。 需要转换

{
     "account":"rf750",
     "type":null,
     "amount":"31",
     "auth_type":"5",
     "balance":"2.95",
     "card":"re0724"
} 


嗯,这里有三种不同的情况

第一个问题是:如何更改字符串

简单-您可以进行一些字符串替换,最好使用正则表达式。移除开始/结束大括号,将[a]:[b]更改为[a]=[b],-或者按照您希望的最终格式

第二个,也是稍微更深一点的问题是:JSON不仅仅是键=值的简单列表。你可以做窝。您可以使用非字符串数据。简单地说您想将JSON结果更改为key=value、key=value、key=value等等,这是很脆弱的。您如何知道JSON结构将是您所期望的?JSON序列化将成功序列化,即使您有嵌套结构、非字符串/整型数据等。如果您想要不易中断的可靠代码,您必须弄清楚:我如何处理这个问题?我能处理吗


第三,也是最后一件事是:采用标准数据格式模式,并找出如何将其转换为非标准数据格式。90%的时候有人这样做,他们应该被枪杀。认真地说,花一些时间问问自己是否可以按原样使用JSON,以及是否可以将需要key=value、key=value等的流程更改为使用实际的标准化数据格式。

下面是一个简单的解决方案,1将JSON解析为字典,2使用和Linq提供所需的输出:

using System.Linq;
using Newtonsoft.Json;
..
var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
var str = string.Join(',', dict.Select(r => $"{r.Key}={r.Value}"));

谢谢大家的时间和回复。你的回答让我找到了解决方案,最后我找到了下面的解决方案,完美地解决了这个问题

var jObj = (JObject)JsonConvert.DeserializeObject(modelString);

modelString = String.Join("&",jObj.Children().Cast<JProperty>().Select(jp => jp.Name + "="+ HttpUtility.UrlEncode(jp.Value.ToString())));

上面的代码将JSON转换为url编码的字符串,并删除JSON格式

您能否提供一个。您的输出示例不一致。请澄清。看起来有点像。
account=rf750,type=,amount=31,auth_type=5,balance=2.95,card=re0724
var jObj = (JObject)JsonConvert.DeserializeObject(modelString);

modelString = String.Join("&",jObj.Children().Cast<JProperty>().Select(jp => jp.Name + "="+ HttpUtility.UrlEncode(jp.Value.ToString())));