如何在c#中将具有相等“=”符号的字符串转换为json

时间:2016-06-27 04:35:57

标签: c# json string

我有以下字符串,这是从Web服务返回的

"Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545"

我想将此转换为json,如下所示

{
    "Status": "Success",
    "PNR": "76UUEI78787870",
    "Customer_Ref": "89511133545"
}

我该怎么做。

5 个答案:

答案 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.Jsonjson.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);

注意:这始终优于字符串方法的使用。