我想从网站输出消息:vk.com,
如果我输入浏览器:https://api.vk.com/method/"+method+"?"+param+"&v=5.31&access_token="+myAuth.Token1+""
并填充正确的变量,我会得到一个页面:
“响应”:{ “计数”:12455, “项目”:[{ “ID”:19506, “日期”:1431024353, “出”:0, “USER_ID”:65896237, “read_state”:1, “title”:“......”,“body”:“Message”} ...
如何从JSON获取这些值(id,date,body)? 如果我运行我的代码尝试,我得到保存窗口或打开该JSON文件...
private void button3_Click(object sender, EventArgs e)
{
string method = "messages.get";
string param = "out";
string url = "https://api.vk.com/method/"+method+"?"+param+"&v=5.31&access_token="+myAuth.Token1+"";
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.Navigate(url);
}
答案 0 :(得分:4)
获取整个JSON响应并发布here,然后生成您的课程。如果你成功的话,你会有类似的东西
public class Item
{
public int id { get; set; }
public int date { get; set; }
public int @out { get; set; }
public int user_id { get; set; }
public int read_state { get; set; }
public string title { get; set; }
public string body { get; set; }
}
public class Response
{
public int count { get; set; }
public List<Item> items { get; set; }
}
public class RootObject
{
public Response response { get; set; }
}
然后在你的代码中你可以
WebClient client = new WebClient();
string json = client.DownloadString(url);
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
RootObject response = (RootObject) json_serializer.Deserialize(json, typeof(RootObject));
现在 回复 包含您的信息,您只需循环浏览商品
答案 1 :(得分:1)
WebBrowser
控件
WebClient client = new WebClient();
string json = client.DownloadString(url);
这会将JSON作为字符串,而不显示任何UI。
你仍然需要解析JSON中的值 - 我不确定你是否知道如何做到这一点,因为你陷入了WebBrowser的困境。无论如何,我建议你试试Json.net库。
答案 2 :(得分:1)
您是否尝试过使用JsonConvert课程?我使用Web API创建了一个服务器,并使用JsonConvert为我自动反序列化Json值。这是我的意思的一个例子:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("base url");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("specific url extention"); //this will asynchronously call server
if (response.IsSuccessStatusCode) //test if http connection made
{
string s = await response.Content.ReadAsStringAsync();
List<string> fooList = JsonConvert.DeserializeObject<List<string>>(s);
for (int i = 0; i < 3; i++)
{
string id = fooList[0];
string date = fooList[1];
string body = fooList[2];
}
}
我希望这会有所帮助。
答案 3 :(得分:0)
我创建了一个带有jQuery UI的对话框,它使用ajax调用,mvc控制器返回所有产品。
使用Javascript:
$dialog = $("#dlgCadastroProduto").dialog({
modal: true,
autoOpen: false,
height: 500,
width: 700,
buttons: {
Ok: function () {
$(this).dialog("close");
$("#lstProducts").empty();
$("#lstSelectedProducts").empty();
$.ajax({
type: "GET",
url: '/Product/jsonLoad',
async: true,
dataType: 'json',
success:
function (data) {
//alert('success');
$.each(data, function (index, value) {
$("#lstProducts").append('<option value='+value.ID+'>'+value.Description+'</option>')
});
},
error: function (data) {
//alert(data);
}
});
}
}
});
C#:
public JsonResult jsonLoad()
{
var list = _productBLL.FindAll();
var xpto = list.Select(x => new { Id = x.ID, Description = x.Description });
return Json(xpto, JsonRequestBehavior.AllowGet);
}
我希望我有所帮助!