2016-06-27 44 views
1

我有以下字符串,這將返回來自Web服務如何將字符串轉換用等號「=」號JSON在C#

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

我想這對JSON像轉換下面

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

我該怎麼做。

回答

2
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]))) + 
      "}"; 
+0

好和thanx。好工作 – bill

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

它處理之類的內部名稱正確報價。

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圖書館工作

0

你可以指定字符串轉換爲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

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

注意:這始終優於使用字符串方法。

相關問題