首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非法人物“?”A当我使用ConvertTo创建JSON时

非法人物“?”A当我使用ConvertTo创建JSON时
EN

Stack Overflow用户
提问于 2018-10-15 17:21:20
回答 2查看 1.9K关注 0票数 2

我不是powershell的人,如果我的问题让人困惑,请原谅。

我们正在使用ConverTo创建一个JSON文件,它成功地创建了JSON文件。然而,当我禁止JSON的内容时,它有'??‘。在json文件的开头,但是当我在文件系统中下载文件/查看文件时,没有看到同样的情况。

下面是用于创建JSON文件的powershell代码:

代码语言:javascript
复制
$packageJson = @{
    packageName = "ABC.DEF.GHI"
    version = "1.1.1"
    branchName = "somebranch"
    oneOps = @{
        platform = "XYZ"
        component = "JNL"
    }
}

$packageJson | ConvertTo-Json -depth 100 | Out-File "$packageName.json"

上面的一组代码成功地创建了文件,当我查看文件时,一切看起来都很好,但是当我禁止文件时,它的前导是‘?’。如下所示:

代码语言:javascript
复制
??{

    "packageName":  "ABC.DEF.GHI",

    "version":  "0.1.0-looper-poc0529",

    "oneOps":  {

                  "platform":  "XYZ",

                  "component":  "JNL"

               },

   "branchName":  "somebranch"

}

由于这个原因,我无法解析JSON文件,它给出了以下错误:

代码语言:javascript
复制
com.jayway.jsonpath.InvalidJsonException: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('?' (code 65533 / 0xfffd)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-15 17:36:56

这些不是?字符。这是组成Unicode字节顺序标记的两个不同的不可打印字符。您可以看到?,因为调试器、文本编辑器、操作系统或字体就是这样呈现不可打印字符的。

要解决这个问题,要么更改输出编码,要么在另一端使用理解UTF-8的字符集。前者是简单的解决办法,但从长远来看,后者可能更好。最终,您将得到需要扩展字符的数据。

票数 4
EN

Stack Overflow用户

发布于 2020-05-21 19:53:40

一个不特定于Out-File的更通用的解决方案是在调用ConvertTo-Json之前设置这些

代码语言:javascript
复制
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52821806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档