我是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 显示为普通字符串?
答案 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"];