将JSON中的动态元素字符串转换为类

时间:2014-03-05 20:50:34

标签: c# json

我找不到一个可以解决我要问的问题,所以我继续创建了这个问题。

我有一个json从我们的UI回复给我,我可以将它转换为一个没有任何问题的对象,直到我点击这一行:

\"lang\":{\"en-US\":{\"name\":\"AS Test Assembly Activity\",\"description\":\"Activity to test assembly activities\"}}

我的问题是“en-US”它似乎是一个带有'name'和'description'字段的类。如何安全地将“en-US”转换为对象?这可以是动态的,也可以是文化代码的设置。

我可以通过将其更改为此来转换它:

\"lang\":{\"culture\":\"en-US\",\"name\":\"AS Test Assembly Activity\",\"description\":\"Activity to test assembly activities\"}}

但是现在UI声明他们可以使用它,但更喜欢它与原始json内联。

有什么想法吗?

由于

编辑:(我的意思是'转换'en-US“到一个班级?)

当我将其转换为类时,它应该看起来很简单:

public class CustomActivityLanguageData
{
    public string Name { get; set; }
    public string Description { get; set; }
    public string Culture { get; set; }
}

但文化是为我上面提到的'修复'添加的。在我发布的原始json上,看起来“en-US”将是一个类,就像上面代码中的'CustomActivityLanguageData'类是一个类(在json中的btw'CustomActivityLanguageData'=='lang')

似乎“en-US”附加了字段,就像一个类,但它不会转换。

Double Edit:为了进一步说明这一点,看起来这就是这个类最终的样子:

public class Lang
{
    en-US cultureCode {get;set;}
}

public class en-US
{
    public string name {get;set;}
    public string description {get;set;}
}

希望能更好地解释一下。

1 个答案:

答案 0 :(得分:1)

你需要意识到你在这里得到的东西。您收到了一个字典(在JSON中,它被称为'对象')。字典中的一个关键词是“lang”。 “lang”键的值本身就是一个字典。它可能有很多键,可能用于不同的语言,但是你只收到一个名为“en-US”的键。并且该键的值也是具有两个键“name”和“description”的字典。

通常情况下,我希望你能收到多个词典,不仅仅是“en-US”,还有其他语言的键,如法语,德语或日语;然后,您将选择最适合您的应用程序的那个,并从中提取“名称”和“描述”键。