.net核心项目中不允许JavaScriptSerializer?

时间:2019-01-09 12:40:44

标签: asp.net-core-2.1 jsonserializer json-serialization

我正在.net核心项目中工作。我想使用JavaScriptSerializer序列化对象。

JavaScriptSerializer Serializer = new JavaScriptSerializer();

我添加了命名空间using System.Web.Script.Serialization;。它引发错误。我用谷歌搜索。我看到.net核心项目在某些站点中没有System.Web.Script.Serialization;

还有没有其他方法可以像JavaScriptSerializer一样序列化.net核心中的对象?

3 个答案:

答案 0 :(得分:3)

.net核心中最常见的使用Newtonsoft.Json对对象(JSON)进行序列化和反序列化的方法。

您需要安装Newtonsoft.Json的Nuget软件包

使用如下语句添加:

using Newtonsoft.Json;

并将其用作:

object o = JsonConvert.DeserializeObject(json1);
string json2 = JsonConvert.SerializeObject(o, Formatting.Indented);

答案 1 :(得分:3)

对于 ASP.NET Core 3.1 ,我们可以将JsonSerializer.Deserialize中的System.Text.Jsonstring / dynamic字典Dictionary<string, dynamic>一起使用。

示例加载ClientApp\package.json

using System;
using System.Text.Json;
using System.Collections.Generic;

...

var packageJson = File.ReadAllText(Path.Combine(env.ContentRootPath, "ClientApp", "package.json"));

var packageInfo = JsonSerializer.Deserialize<Dictionary<string, dynamic>>(packageJson);

Console.WriteLine("SPA Name: {0}, SPA Version: {1}", 
    packageInfo["name"], packageInfo["version"]);

当然,我们必须使用ClientApp\package.json中的Target> Copy命令将.csproj复制到发布目录。

答案 2 :(得分:2)

先安装Newtonsoft.Json,然后

在控制器中:

string data = JsonConvert.SerializeObject(new { MyUser = user, MyId = id });
object dataObj = JsonConvert.DeserializeObject(data);
return Json(dataObj);

并在Javascript文件中:

$.ajax({
   // some codes!
   success: function(data){
      var user = data.MyUser;
      var id = data.MyId
   }
});