这是我的代码:
Encoding enc = System.Text.Encoding.GetEncoding(1252);
StreamReader loResponseStream = new StreamReader(resp.GetResponseStream(), enc);
JsonSerializer serializer = new JsonSerializer();
JsonTextReader jsreader = new JsonTextReader(loResponseStream);
results = (mHealthData)serializer.Deserialize(jsreader, typeof(mHealthData)); ***
loResponseStream.Close();
public class mHealthData
{ // Class for the Mhealth Data
public class RootObject
{
public string source { get; set; }
public string name { get; set; }
public string type { get; set; }
public string unit { get; set; }
public double value { get; set; }
public string timestamp { get; set; }
}
}
这是我收到的错误在标有 * * 的行上:
无法将当前JSON数组(例如[1,2,3])反序列化为类型“MHealthPlugin.mHealthData”,因为该类型需要JSON对象(例如{“name”:“value”})才能正确反序列化。 要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”})或将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),如{{1可以从JSON数组反序列化。 JsonArrayAttribute也可以添加到类型中,以强制它从JSON数组反序列化。
我不知道如何解决这个问题。我已经尝试将List<T>
几乎放在代码中的任何地方,但它没有帮助。其他休息电话我做得很好。
作为参考,这里是我正在尝试解析的JSON的示例:
List<mHealthData>
答案 0 :(得分:3)
除了嵌套类之外,您的mHealthData
类中没有任何内容。退后一步,看看你的数据应该如何定义。
看起来你想要一个RootObject
课程。在这种情况下,课程应该是:
public class RootObject
{
public string source { get; set; }
public string name { get; set; }
public string type { get; set; }
public string unit { get; set; }
public double value { get; set; }
public string timestamp { get; set; }
}
然后当你反序列化时,你最终会得到一个RootObject[]
类型的对象 - 你的JSON只是一个数组,而不是一个包含数组的对象。