我正在制作要在WebGL中使用的Unity游戏,我需要将所有游戏对话/文本存储在JSON文件中以进行本地化。我还使用Unity内部的Fungus框架来帮助我建立对话的叙述结构。
该游戏将使用API连线到平台,该API可以通过以下方式读取JSON语言文件:语言>键名。
真菌框架使用JSON文件通过以下方式读取对话:键名>语言。
这是真菌框架用于读取存储游戏语言文本的JSON文件的格式。 (我的文件看起来像这样...)
{
"string-key-1":{
"en":"Text for the 'string-key-1' key",
"es":"Texto para la llave 'string-key-1'"
},
"string-key-2":{
"en":"Text or the 'string-key-2' key",
"es":"Texto para la llave 'string-key-2'"
}
}
这是门户网站API用来读取存储游戏语言文本的JSON文件的格式。 (我想获取第一个文件并生成一个新的文件,如下所示)
{
"en":{
"string-key-1":"Text for the 'string-key-1' key",
"string-key-2":"Text for the 'string-key-2' key"
},
"es":{
"string-key-1":"Texto para la llave 'string-key-1'",
"string-key-2":"Texto para la llave 'string-key-2'"
}
}
有没有办法采用第一种格式(字符串键>语言)并以该格式(语言>字符串键)生成新文件?
答案 0 :(得分:1)
让我们假设您要输入一个字符串,并希望将其转换为另一个字符串。
这是一种方法:
Dictionary<StringKey, Dictionary<Language, Value>>
)。 { StrKey, Language, Value }
的列表所以逐行关注
var resultObject = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(input)
.SelectMany(key => key.Value.Select(str => new { StrKey = key.Key, Language = str.Key, Value = str.Value }))
.GroupBy(item => item.Language)
.ToDictionary(group => group.Key, group => group.ToDictionary(item => item.StrKey, item => item.Value));
var resultStr = JsonConvert.SerializeObject(result, Formatting.Indented);