我有一些我需要转换为C#的JavaScript代码.我的JavaScript代码将一些JSON发布到已创建的Web服务.此JavaScript代码工作正常,如下所示:
var vm = { k: "1", a: "2", c: "3", v: "4" };
$.ajax({
url: "http://www.mysite.com/1.0/service/action",
type: "POST",
data: JSON.stringify(vm),
contentType: "application/json;charset=utf-8",
success: action_Succeeded,
error: action_Failed
});
function action_Succeeded(r) {
console.log(r);
}
function log_Failed(r1, r2, r3) {
alert("fail");
}
Run Code Online (Sandbox Code Playgroud)
我正在试图找出如何将其转换为C#.我的应用程序使用的是.NET 2.0.据我所知,我需要做以下事情:
using (WebClient client = new WebClient())
{
string json = "?";
client.UploadString("http://www.mysite.com/1.0/service/action", json);
}
Run Code Online (Sandbox Code Playgroud)
我现在有点卡住了.我不确定json应该是什么样的.我不确定是否需要设置内容类型.如果我这样做,我不知道该怎么做.我也看到了UploadData.所以,我不确定我是否使用了正确的方法.从某种意义上说,我的数据序列化是我的问题.
谁能告诉我我在这里失踪了什么?
谢谢!
在本教程中:http://www.asp.net/web-api/videos/getting-started/custom-validation Jon使用
dynamic error = new JsonObject();
Run Code Online (Sandbox Code Playgroud)
同
using System.Json;
Run Code Online (Sandbox Code Playgroud)
我猜这是JsonObject:http : //msdn.microsoft.com/en-us/library/system.json.jsonobject( v=vs.110) .aspx位于:
我已经添加了System.Runtime.Serialization引用但仍无法找到System.Json.
我读微软的文档错了吗?(我使用的是.NET 4.5)
我想转换JSON字符串
"{ \"birthday\": \"1988-03-18\", \"address\": { \"state\": 24, \"city\": 8341, \"country\": 1 } }"
Run Code Online (Sandbox Code Playgroud)
至
"{ \"address\": { \"city\": 8341, \"country\": 1, \"state\": 24 }, \"birthday\": \"1988-03-18\" }"
Run Code Online (Sandbox Code Playgroud)
注意:我没有使用排序版本进行通信(因为密钥顺序并不重要),我需要一个排序版本来执行本地测试(通过比较JSON字符串).
编辑: I4V指出一个使用Json.Net的解决方案,我宁愿使用一个不需要包含任何第三方库的解决方案(实际上我在我的应用程序中使用内置的System.Json)
我张贴由I4V +一些测试提供的解决方案要点这里.谢谢你们.
我想保存这个对象:
Student s = new Student();
Run Code Online (Sandbox Code Playgroud)
到Json文件.但Visual Studio 2012找不到这些名称空间:
System.Web.Script;
System.Json;
System.Runtime.Serialization.Json;
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我需要从C#Web服务获取Json数据.
我知道基于此有几个问题,请相信我,我已阅读了不少内容,但只是为了让我更加困惑.
这就是我所做的:
在我的网络服务中,我包括:[System.Web.Script.Services.ScriptService]用于课程和[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]方法
我还用a JavaScriptSerializer()来将我的数据转换为字符串
我正在使用这个服务 $.getJSON()
如果我不使用它,我会收到跨域引用错误.
为此,我不得不设置m服务来获取回调函数名称,所以我传递t his.Context.Request["callback"]+序列化的Json数据;
但是在输出中我把它包裹起来
< string xmlns="http://XYZ...">
Run Code Online (Sandbox Code Playgroud)
标签内的数据采用我需要的格式
我还尝试使用以下方法设置内容类型 $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
但仍然没有成功.
稍后添加:我接受了frenchie的anwser,因为我知道这是正确的方法,但我仍然不能让它工作......我只是将webservice和网站放在同一个域并使用xml,我知道这不是最好的方法,但是我花了两天时间而且不能浪费更多.