【发布时间】:2014-08-24 18:14:32
【问题描述】:
在 C# 中,我有 5-6 天,我想尝试使用 api 一个站点。 我已经反序列化 JSON,这是格式
[ { “uid”:1476402, "first_name": "", "姓氏": "", “域”:“sandrische”, “在线”:1, “用户 ID”:1476402 }, { “uid”:3813182, "first_name": "", "姓氏": "", “域”:“id3813182”, “在线”:0, “用户 ID”:3813182 }, { “uid”:12789624, "first_name": "", "姓氏": "", “域”:“id12789624”, “在线”:0, “用户 ID”:12789624 }]
有一门课
public class vkResponse
{
[JsonProperty(PropertyName = "uid")]
public int Id { get; set; }
[JsonProperty(PropertyName = "first_name")]
public string FirstName { get; set; }
[JsonProperty(PropertyName = "last_name")]
public string LastName { get; set; }
[JsonProperty(PropertyName = "photo_50")]
public Uri PhotoUri { get; set; }
[JsonProperty(PropertyName = "online")]
[JsonConverter(typeof(BoolConverter))]
public bool IsOnline { get; set; }
[JsonProperty(PropertyName = "lists")]
public List<int> Lists { get; set; }
}
public class BoolConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((bool)value) ? 1 : 0);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return reader.Value.ToString() == "1";
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(bool);
}
}
我想得到身份证
var req = new HttpRequest();
string resp = req.Get("https://api.vk.com/method/friends.get?user_ids=1&fields=domain&access_token=" + GetToken()).ToString();
JObject o = JObject.Parse(resp);
JArray array = (JArray)o["response"];
vkResponse v = JsonConvert.DeserializeObject<vkResponse>(array.First().ToString());
richTextBox1.Text = v.Id.ToString();
但我只得到第一个ID,如何获取所有ID?
我认为这个array.First().ToString() 的问题是什么?请帮忙或举个例子。
【问题讨论】:
-
无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“WindowsFormsApplication30.vkResponse”,因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合的类型
-
如果您通过 asp.net web-api 控制器使用它,您可以简单地将其作为操作的参数,序列化程序会自动为您排序。含义 void myaction([FromBody] vkResponse[] 响应)
标签: c# json jsonserializer