- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 powershell 2.0 编写脚本,现在无法升级到 3.0 或更高版本。在此脚本中,我尝试使用此链接 ( PowerShell 2.0 ConvertFrom-Json and ConvertTo-Json implementation ) 中的代码将一些数据序列化为 JSON:
function ConvertTo-Json20([object] $item){
add-type -assembly system.web.extensions
$ps_js=new-object system.web.script.serialization.javascriptSerializer
return $ps_js.Serialize($item)
}
$testRoot = @{
"id" = "1"
"children" = @(
@{
"id" = "2"
"children" = @(
@{
"id" = "2";
};
@{
"id" = "3";
}
);
};
@{
"id" = "4"
"children" = @(
@{
"id" = "5";
}
);
}
)
}
ConvertTo-Json20 $testRoot
{
"id":"1",
"children":[
{
"id":"2",
"children":[
{
"id":"2"
},
{
"id":"3"
}
]
},
{
"id":"4",
"children":[
{
"id":"5"
}
]
}
]
}
ConvertTo-Json20 @($testRoot)
Exception in method "Serialize" with 1 argument(s):
"While serializing an object of type "System.Management.Automation.PSParameterizedProperty" a circular reference was discovered."
At C:\Users\a38732\Desktop\Temp.ps1:34 symbol:28
+ return $ps_js.Serialize <<<< ($item)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
最佳答案
一个问题是使用JavaScriptSerializer
类本身。截至今天,documentation itself concedes it should not be used to serialize nor deserialize JSON .报价:
Json.NET should be used serialization and deserialization.
function ConvertTo-JsonNet {
[CmdletBinding()]
param(
[Parameter(Mandatory)] $object,
[Parameter(Mandatory)] [string]$jsonNetPath,
[switch]$indent,
[switch]$preserveReferencesHandling
)
Add-Type -Path $jsonNetPath;
$formatting = if ($indent.IsPresent) { [Newtonsoft.Json.Formatting]::Indented; }
else { [Newtonsoft.Json.Formatting]::None; }
$settings = New-Object Newtonsoft.Json.JsonSerializerSettings;
if ($preserveReferencesHandling.IsPresent) {
$settings.PreserveReferencesHandling = [Newtonsoft.Json.PreserveReferencesHandling]::Objects;
}
[Newtonsoft.Json.JsonConvert]::SerializeObject($object, $formatting, $settings);
}
Newtonsoft.Json.dll
与您的脚本位于同一目录中:
$dllPath = Join-Path $PSScriptRoot 'Newtonsoft.Json.dll';
ConvertTo-JsonNet @($testRoot) $dllPath;
[{"id":"1","children":[{"id":"2","children":[{"id":"2"},{"id":"3"}]},{"id":"4","children":[{"id":"5"}]}]}]
.nupkg
文件扩展名,但它是一个压缩文件,因此将扩展名重命名为
.zip
你准备好了。在
lib
子目录中有 .dll 文件,适用于 2.0 到 4.5 的 .NET 版本。
关于带有javascriptSerializer的powershell 2.0中的Json循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39161783/
我怎样才能找到这个问题的根源,其中一个日期值由JavaScriptSerializer 不能被 JavaScriptSerializer 反序列化? 在调用应用程序中: var serializer
我有一个包含三个参数的对象(称为表达式): term1 操作 term2 其中 term1 和 term2 是对象,操作是字符串。处理对象的逻辑可以处理 term1 或 term2 作为字符串或包含嵌
我遇到的问题与此处描述的完全相同 https://stackoverflow.com/questions/12565464/javascriptserializer-deserialize-an-id
我在使用 JavaScriptSerializer 序列化时遇到问题。比如我有一个基类 public class MyBaseClass{ public int Id { get; set;
MSDN documentation JavaScriptSerializer 类的状态: Json.NET should be used serialization and deserializat
我有一个图形对象,我需要对其进行序列化。无论我实现哪些成员,该方法都会返回 {} string json = new JavascriptSerializer().Serialize(routeGra
我有一个继承自 A 类的 B 类。 Class B:A { public string Prop1{get;set} public string Prop2{get;set} pub
我将 JavascriptSerializer 与自定义 JavascriptConverter 一起使用,如下所示: public override IDictionary Serialize(ob
我有一个类似这样的类库项目.... [DataContract] public class DomainVerify { [DataMember] internal string ke
我在尝试实现 JavaScriptSerializer 来解析从服务器接收的 JSON 字符串时遇到问题。 我实现了以下代码: responseFromServer = readStream.Read
我有以下数据: {"data":{"id":"7IaWnXo","title":null,"description":null,"datetime":1397926970,"type":"image/
我正在使用 JavaScriptSerializer 反序列化 json 数据。一切正常,但我的问题是,json 数据中的一个属性名为“base”,因此我无法在我的 C# 代码中创建这样的属性。我发现
我在反序列化 .NET MVC3 中的数组时遇到问题,我们将不胜感激。 这是代码片段: using (HttpWebResponse response = request.GetResponse()
我正在尝试在 Net 3.5 中使用 JavaScriptSerializer 生成以下 JSON 结构: { "chart": "pie", "series": [
我正在阅读 this book但是我使用 System.Web.Script.Serialization 命名空间中的 JavaScriptSerializer,因为它似乎不可用? 最佳答案 我知道这
我知道ScriptIgnoreAttribute。 但是,如果我想忽略基于条件的属性该怎么办。 例如,如何仅在序列化为null且不包含任何值时才忽略序列化的可空属性? 最佳答案 我最好的答案是制作自己
我在 Windows Azure 上有一个基于预测的应用程序 ( http://ipredikt.com )。据我所知,Azure 的时钟与 GMT 时区同步。这是我遇到的一个问题: 假设我有一个名为
我使用以下代码将 JSON 字符串反序列化为使用 Person 对象: JavaScriptSerializer serializer = new JavaScriptSerializer(); Pe
我正在 visual studio 2013 中用 c# 创建一个网络服务。我已连接到数据库并使用以下代码返回 json。 [WebMethod] [ScriptMethod(ResponseForm
我返回了一个 Json(myObj) 操作结果。 myObj 是 Badge 类型 Badge 仅有的两个可能导致序列化程序循环的对象是: public class Badge { publi
我是一名优秀的程序员,十分优秀!