我有以下字符串,這將返回來自Web服務如何將字符串轉換用等號「=」號JSON在C#
"Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545"
我想這對JSON像轉換下面
{
"Status": "Success",
"PNR": "76UUEI78787870",
"Customer_Ref": "89511133545"
}
我該怎麼做。
我有以下字符串,這將返回來自Web服務如何將字符串轉換用等號「=」號JSON在C#
"Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545"
我想這對JSON像轉換下面
{
"Status": "Success",
"PNR": "76UUEI78787870",
"Customer_Ref": "89511133545"
}
我該怎麼做。
var str = "Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545";
var vals = str.Split(',');
var json = "{" +
string.Join(",",
vals.Select(val => val.Split('=')).Select(s => string.Format("\"{0}\": \"{1}\"", s[0], s[1]))) +
"}";
試試這個代碼,使用JavaScriptSerializer
:
var paramList = "Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545";
var dict = paramList.Split(',').Select(x => x.Split('=')).ToDictionary(x => x[0], x => x[1])
var json = new JavaScriptSerializer().Serialize(dict);
它處理之類的內部名稱正確報價。
這可能做的伎倆爲您
private static string format_json(string json)
{
json = json.Replace('=',":");
dynamic parsedJson = JsonConvert.DeserializeObject(json);
return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
}
這與newtonsoft.Json
和json.net
圖書館工作
你可以指定字符串轉換爲Dictionary
和下面使用Json.Net
序列。
string s = @"Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545";
var dictionary = s.Split(',') // create a dictionary.
.Select(x=>x.Split('='))
.ToDictionary(x=>x[0], x=>x[1]);
string json = JsonConvert.SerializeObject(dictionary, new KeyValuePairConverter());
//output
// {"Status":"Success","PNR":"76UUEI78787870","Customer_Ref":"89511133545"}
入住這fiddle
考慮使用StringBuilder的工作(特別是如果性能是很重要的,如果你需要在未來更大的字符串工作)。
string sourceString = "Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545";
StringBuilder bufferString = new StringBuilder();
bufferString.Append("{\"").Append(sourceString)
.Replace(",", "\",\"")
.Replace("=", "\": \"")
.Append("\"}");
string outputString = bufferString.ToString();
/*
* libraries like Newtonsoft.Json NuGet package could help prettify the output string if needed
*/
string prettyJSON = JValue.Parse(bufferString.ToString()).ToString(Formatting.Indented);
注意:這始終優於使用字符串方法。
好和thanx。好工作 – bill