我正在使用一个返回JSON字符串的Web服务。
String str =[{"users":{"company":"abc","contact_Number":"999999999"}},
{"users":{"company":"xyz","contact_Number":"888888888"}},
{"users":{"company":"xxx","contact_Number":"555555555"}},
]
无法反序列化。
class jsonmenuwrapper
{
public user[] users{ get; set; }
// public List<user> listcontacts;
}
public class user
{
public String company
{
get;
set;
}
public String contact_Number
{
get;
set;
}
}
JavaScriptSerializer sr= new JavaScriptSerializer();
jsonmenuwrapper sr1 = sr.Deserialize<jsonmenuwrapper>(str);
抛出错误.. jsonmenuwrapper'不支持反序列化数组。
有人可以指导我吗?感谢..
答案 0 :(得分:2)
您实际上正在反序列化一组用户。根本不需要jsonmenuwrapper
课程。
只需更改1行:
List<user> sr1 = sr.Deserialize<List<user>>(str);
更好的答案
实际上,您尝试反序列化的数据结构是包装器对象的数组,但每个包装器只包含1&#34;用户&#34;不是他们的数组。这是一个带有单元测试的工作设置,以显示其工作原理:
public class jsonmenuwrapper
{
public user users { get; set; }
}
public class user
{
public String company { get; set; }
public String contact_Number { get; set; }
}
[TestFixture]
public class JsonTests
{
[Test]
public void TestArrayDeserialization()
{
const string str =
@"[{""users"":{""company"":""abc"",""contact_Number"":""999999999""}},
{""users"":{""company"":""xyz"",""contact_Number"":""888888888""}},
{""users"":{""company"":""xxx"",""contact_Number"":""555555555""}}]";
var serializer = new JavaScriptSerializer();
var data = serializer.Deserialize<List<jsonmenuwrapper>>(str);
Assert.AreEqual(3, data.Count);
Assert.AreEqual("abc", data[0].users.company);
Assert.AreEqual("999999999", data[0].users.contact_Number);
Assert.AreEqual("xyz", data[1].users.company);
Assert.AreEqual("888888888", data[1].users.contact_Number);
Assert.AreEqual("xxx", data[2].users.company);
Assert.AreEqual("555555555", data[2].users.contact_Number);
}
}
答案 1 :(得分:1)
看起来你正在将一个字符串转换为一个对象数组......我希望它会抛出异常,但事实并非如此,所以试试这个:
String str ="[{\"users\":{\"company\":\"abc\",\"contact_Number\":\"999999999\"}},
{\"users\":{\"company\":\"xyz\",\"contact_Number\":\"888888888\"}},
{\"users\":{\"company\":\"xxx\",\"contact_Number\":\"555555555\"}}
]";
答案 2 :(得分:0)
不要将您的课程标记为Serializable
吗?
[Serializable]
public class jsonmenuwrapper
{
//...
}
[Serializable]
public class user
{
//...
}