奇怪的使用newtonsoft json.net与powershell
发布时间:2020-12-16 19:52:44 所属栏目:百科 来源:网络整理
导读:我有 function Foo($a,$b){ $o = @{} $o.A = $a $o.B = $b $post = @{} $post.X="x" $post.entity =$o $newton::SerializeObject($post)} 然后做 foo "a" "b" 我明白了 Exception calling "SerializeObject" with "1" argument(s): "Self referencing loop d
我有
function Foo($a,$b) { $o = @{} $o.A = $a $o.B = $b $post = @{} $post.X="x" $post.entity =$o $newton::SerializeObject($post) } 然后做 foo "a" "b" 我明白了 Exception calling "SerializeObject" with "1" argument(s): "Self referencing loop detected for property 'Value' with type 'System.Management.Automation.PSParameterizedProperty'. Path 'entity.Members[0]'." 然而 function Foo2($o) { $post = @{} $post.X="x" $post.entity =$o $newton::SerializeObject($post) } foo2 @{a="a"; b="b"} 工作良好.也 function foo3($a,$b) { $o = @{} $o.A = $a $o.B = $b $newton::SerializeObject($o) } foo3 "a" "b" 工作,但 foo3 "a" 1 失败 后者可以通过这样做来工作 $o.B= [Int32]::Parse($b.Tostring()) 这一切似乎都很奇怪 Windows 7上的powershell v2,json.net 4.4.5
自我引用循环问题完全是……分配事物的顺序.以下示例有效:
function Foo($a,$b) { $o = @{} $post = @{} $post.entity =$o $o.A = $a $o.B = $b $post.X="x" [Newtonsoft.Json.JsonConvert]::SerializeObject($post) } Foo "a" "b" {"entity":{"A":"a","B":"b"},"X":"x"} 如果你在传递它之前转换类型,那么它将保持你的foo3函数通用: function foo3($a,$b) { $o = @{} $o.A = $a $o.B = $b [Newtonsoft.Json.JsonConvert]::SerializeObject($o) } $var2 = [Int32]::Parse((1).Tostring()) Foo3 "a" $var2 {"A":"a","B":1} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |