如何在 Windows Phone 的 C# 中将字符串转换为 JSON
本文关键字:字符串 转换 JSON Windows Phone | 更新日期: 2023-09-27 18:35:20
>我有一个格式的json字符串
{
"code": 0,
"message": "success",
"data": [
{
"data": 10,
"total": 1000
}
],
"page": {
"page": 1,
"per_page": 200,
}
}
我只是尝试通过以下代码将其转换为 json,
public class Invoice
{
public int data {get; set;}
public int total { get; set; }
}
public class Page
{
public int page { get; set; }
public int per_page { get; set; }
}
public class RootObject
{
public int code { get; set; }
public string message { get; set; }
public List<Lisst> Lisst{ get; set; }
public Page Page{ get; set; }
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Accept = "application/json;odata=verbose";
request.Method = "GET";
request.BeginGetResponse(new AsyncCallback(GotResponse), request);
}
private void GotResponse(IAsyncResult asyncResult)
{
try
{
string data;
HttpWebRequest myhttpwebrequest = (HttpWebRequest)asyncResult.AsyncState; ;
using (HttpWebResponse response = (HttpWebResponse)myhttpwebrequest.EndGetResponse(asyncResult))
{
System.IO.Stream responseStream = response.GetResponseStream();
using (var reader = new System.IO.StreamReader(responseStream))
{
data = reader.ReadToEnd();
}
responseStream.Close();
}
this.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(data);
});
var myObjects = JsonConvert.DeserializeObject<RootObject>(data);
}
catch (Exception e)
{
var we = e.InnerException as WebException;
System.Diagnostics.Debug.WriteLine("error : "+ we);
if (we != null)
{
var resp = we.Response as HttpWebResponse;
var code = resp.StatusCode;
this.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show("Bye");
});
}
else
throw;
}
当我运行这段代码时,预期的输出以字符串形式存储在数据中,但在运行行时
var myObjects = JsonConvert.DeserializeObject<RootObject>(data);
我收到一个错误,指出Newtonsoft.Json 中发生了类型为"System.FormatException"的异常.DLL但没有在用户代码中处理...这是存储为键值对的正确方法吗?
这只是一个格式异常(正如它所说的那样)。JSON 格式不正确,因此在尝试将其反序列化为根对象时"无法读取它"。
有关基本的 json 验证,请参阅以下站点,以查看此 JSON 字符串中的位置有放错位置的字符等。
http://jsonformatter.curiousconcept.com/
将 JSON 粘贴到其中,您将看到有几个错误。
注意:我根本不是暗示这是将来开发期间验证 JSON 的一种方式。我是说,在这种情况下,这是我隔离您异常原因的一种方式。JSON("未序列化"对象)的源呈现方式显然存在问题。
此外,作为旁注,不应不处理此类异常。在那里获得一些适当的尝试捕获块。