我有以下字符串,这是从Web服务返回的
"Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545"
我想将此转换为json,如下所示
{
"Status": "Success",
"PNR": "76UUEI78787870",
"Customer_Ref": "89511133545"
}
我该怎么做。
答案 0 :(得分:2)
input{
file{
path => "D:/Log/*.*"
start_position => beginning
}
}
答案 1 :(得分:2)
尝试使用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);
它可以正确处理名称中的引号等内容。
答案 2 :(得分:0)
这可能会为你做到这一点
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
库
答案 3 :(得分:0)
您可以将给定字符串转换为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"}
进行序列化,如下所示。
{{1}}
选中此fiddle
答案 4 :(得分:0)
考虑使用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);
注意:这始终优于字符串方法的使用。