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

时间:2019-04-17 17:36:02

标签: c# json

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

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

'account=rf750,type=null,amount=31,authe=5,balanc=2.95,card=re0724'

3 个答案:

答案 0 :(得分:4)

好吧,这里发生了三件事。

第一个也是表面的问题是:如何更改字符串?

简单-您可以进行一些字符串替换,最好使用Regex。删除开始/结束括号,将[a]:“ [b]”更改为[a] = [b],或者-但您希望最终格式看起来像

第二个更深层次的问题是:JSON不仅仅是键=值的简单列表。您可以嵌套。您可以具有非字符串数据。简而言之,您想将JSON结果更改为key = value,key = value,key = value等-易碎。您如何知道JSON结构将是您所期望的?即使您具有嵌套结构,非字符串/ int数据等,JSON序列化也将成功进行序列化。而且,如果您想要不易中断的可靠代码,则必须弄清楚:我该如何处理? 我可以处理吗?

第三点也是最后一件事:您正在采用标准数据格式架构,并弄清楚如何将其转换为非标准数据格式。 90%的人这样做是值得的。认真地,花一些时间询问自己是否可以按原样使用JSON ,是否可以将需要key = value,key = value等的过程更改为使用实际的标准化数据格式。

答案 1 :(得分:2)

这是一个简单的解决方案,其中(1)将json解析为Dictionary,(2)使用http://r.789695.n4.nabble.com/There-is-pmin-and-pmax-each-taking-na-rm-how-about-psum-td4647841.html和Linq String.Join提供所需的输出:

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}"));

str变量现在包含:

account=rf750,type=,amount=31,auth_type=5,balance=2.95,card=re0724

答案 2 :(得分:0)

非常感谢大家的时间和回复。您的回答将我引向了解决方案,最后我找到了以下解决方案,可以完美解决问题。

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格式