我有一个纯文本字符串,其中包含使用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'
答案 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格式