2016-10-20 241 views
0

我已經編輯我的問題:WCF反序列化JSON字符串

我如何反序列化下面的JSON字符串顯示:

"{\"acctId\": \"Test10001\",\"amount\": 200,\"currency\": \"USD\",\"Code\": \"Test\",\"serialNo\": \"1234566789asdsad0\"}" 

請使用此方法或任何其他給建議,我怎樣才能得到數據推薦方法。

+1

暴露你的全部功能 – Aravind

+1

'res'是JSON字符串。所以在這裏使用'HttpUtility.ParseQueryString(res);'是錯誤的。使用JSON序列化器反序列化'res'如'JSON.NET' – AEonAX

+0

如果使用其他方式反序列化而不使用其他庫? –

回答

0

我想下面的代碼應該成爲你的目的:

public class DeserializedData 
    { 
     public string acctId { get; set; } 
     public string amount { get; set; } 
     public string currency { get; set; } 
     public string Code { get; set; } 
     public string serialNo { get; set; } 
    }  

StreamReader reader = new StreamReader(streamdata); 
string res = reader.ReadToEnd(); 

使用第三方的dll像Json.NET或Restsharp:

1)使用Json.Net Json.NET

var result = JsonConvert.DeserializeObject<DeserializedData>(res); 

2.)使用Restsharp Restsharp

var jsonDeserializer = new RestSharp.Deserializers.JsonDeserializer(); 
var response = jsonDeserializer.Deserialize<DeserializedData>(res); 

讓我知道,如果它不適合你。

+0

謝謝,這是工作。你節省了我的時間,再次感謝=) –

+0

不用擔心,交配! – Saket

+0

@saket是你的bug修復了嗎? – Aravind

2

建議您使用如下所示的StreamWriter。 使用此功能,並通過您的字符串,返回的數據流,這將給你所期望的JSON內容

public static Stream GenerateStreamFromString(string s) 
{ 
     MemoryStream stream = new MemoryStream(); 
     StreamWriter writer = new StreamWriter(stream); 
     writer.Write(s); 
     writer.Flush(); 
     stream.Position = 0; 
     return stream; 
} 
1

您的POST請求的有效載荷似乎是JSON格式,所以你應該使用JSON解析庫解析它,如Json.NET。然後你會寫是這樣的:

JsonConvert.DeserializeObject<YourRequestObject>(res) 
0

您可以閱讀JSON字符串這樣

dynamic stuff = JObject.Parse(res.ToString()); 

     string acctId= stuff.acctId; 

但你解析應該JSON格式的響應字符串。