29

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

JavaScriptSerializer Serializer = new JavaScriptSerializer();

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

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

4

3 回答 3

43

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

您需要安装 Nuget 包Newtonsoft.Json

使用如下语句添加:

using Newtonsoft.Json;

并将其用作:

object o = JsonConvert.DeserializeObject(json1);
string json2 = JsonConvert.SerializeObject(o, Formatting.Indented);
于 2019-01-09T13:17:59.807 回答
8

对于ASP.NET Core 3.1,我们可以使用JsonSerializer.DeserializefromSystem.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到发布目录。TargetCopy.csproj

于 2020-06-03T23:53:49.207 回答
4

安装 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
   }
});
于 2020-04-04T21:54:13.880 回答