如何在J#中将Json数据解析为普通数据

时间:2014-03-11 06:05:03

标签: c# json visual-studio-2012 windows-phone-8

我是c#的初学者,我的网站输出如{“result”:“Invalid”}和我的c#程序,似乎是 Json ,我想将这些数据显示为普通字符串并将其显示在消息框中,并使用这些已解析的数据进行验证

程序:

private async void Button_Click(object sender, RoutedEventArgs e)
{
  var username = Username.Text;
  var password = passbox .Password;   
  var postMessage = new StringContent(string.Format("username={0}&password={1}", username, password), Encoding.UTF8 , "application/x-www-form-urlencoded");   
  var response = await (new HttpClient()).PostAsync("http://xxx.xx.net/xx.php", postMessage);   
  var responseBody = await response.Content.ReadAsStringAsync();           
  MessageBox.Show( responseBody );
}

我想知道如何将 responseBody 显示为普通字符串?

4 个答案:

答案 0 :(得分:3)

理想的解决方案取决于你获得的复杂Json字符串。如果它只有一个属性值对,如发布的问题:

{"result":"Invalid"}

我认为简单的字符串操作逻辑可以轻松地为您带来价值("Invalid")。喜欢这个天真的代码:

var jsonString = "{\"result\":\"Invalid\"}";
//remove "{" and "}" from sting
var result = jsonString.Replace("{", "").Replace("}", "");
//separate property name from it's value
var pair = result.Split(':');
//property will contain property name : "result"
var property = pair[0];
//value will contain property value : "Invalid"
var value = pair[1];

否则,如果JSON响应更复杂,则使用字符串操作是不可靠的。我建议按照@Mohammad的建议去Newtonsoft.Json库。

答案 1 :(得分:0)

要将JSON对象转换为字符串,您应该将其序列化 我正在使用Newtonsoft.Json
安装上面的软件包后,您可以按如下方式使用它:

string jsonInString = JsonConvert.SerializeObject(responseBody);
MessageBox.Show(jsonInString);

要将json字符串转换为对象,您可以使用以下内容:

ClassName obj = JsonConvert.DeserializeObject<ClassName>(jsonInString);

答案 2 :(得分:0)

不太确定这是否是最佳方法......但我目前正在实施类似的东西,并使用阅读器......阅读返回的数据。

System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
string outputStr = reader.ReadToEnd();

答案 3 :(得分:0)

如果将结果作为输出返回

,请尝试使用下面的代码使用JSON.Net
    string json = responseBody;
    JObject parsed = JObject.Parse(json);
    string results = (string)parsed["result"];