Visual Studio排序JSON属性错误

时间:2018-03-14 23:35:12

标签: json visual-studio visual-studio-2017

我遇到了Visual Studio 2017(Enterprise,版本15.5.2)的一个奇怪的问题,我只能在一台特定的机器上复制。其他开发机器上不会出现此问题。

给定文件foo.resources.json,其中包含以下内容:

{
    "FooReparatur": "Reparatur",
    "FooVerlust": "Verlust",
    "FooWema": "Wema"
}

应用快速操作Sort Properties会导致密钥顺序错误:

{
    "FooReparatur": "Reparatur",
    "FooWema": "Wema",
    "FooVerlust": "Verlust"
}

Visual Studio的配置语言是英语,没有为给定文件选择架构。 Windows的配置语言是爱沙尼亚语,但该字母表的排序顺序也是错误的。

我通过hexdump检查了任何有趣的unicode字符或任何类似字符,但也没有找到类似的东西。如前所述,文件在所有其他计算机上正确排序。

我已尝试禁用安装所具有的所有(默认)扩展程序,但这也无法解决问题。

我查看了一般文本编辑和特定文件类型的大多数设置,但我找不到可能导致此问题的设置。可能是什么问题?我该如何进一步调试?

2 个答案:

答案 0 :(得分:1)

这是爱沙尼亚整理的一个属性,其中' V'和' W'被视为同一个角色。因此,下一个不同的字符将是重要的字符。正如这个使用.Net的C#代码所证明的那样。

var words1 =  new[] { "FooR", "FooVer", "FooWem" };
var words2 = new[] { "FooR", "FooVa", "FooWb" };

var estonianCultureInfo = new System.Globalization.CultureInfo("et-EE");
var estonianComparer = StringComparer.Create(estonianCultureInfo, false);

var sortedWords = words1.OrderBy(x => x, estonianComparer);
foreach (var word in sortedWords)
{
    Console.WriteLine(word);
}

Console.WriteLine("[-----]");

sortedWords = words2.OrderBy(x => x, estonianComparer);
foreach (var word in sortedWords)
{
    Console.WriteLine(word);
}

输出:

FooR
FooWem
FooVer
[-----]
FooR
FooVa
FooWb

答案 1 :(得分:0)

尝试使用此插件进行排序:

https://marketplace.visualstudio.com/items?itemName=richie5um2.vscode-sort-json

如果dosn工作,请尝试再次安装visual studio并选择语言英语来测试它是否有效

好机会。