引用JSON对象C#中的各种名称

时间:2018-08-23 14:12:18

标签: c# json variables

我有以下内容:

dynamic myJSON = JsonConvert.DeserializeObject(data);

在myJSON中,除了结尾处的数字外,还有其他名称相同的项。

string v1 = myJSON.variable1;
string v2 = myJSON.variable2;
string v3 = myJSON.variable3;

有时可能有3个(如上所述),有时可能有12个,有时只有1个或任何其他数字。

当我不知道会有多少个字符串时,如何将它们全部添加到字符串中?

TIA

2 个答案:

答案 0 :(得分:2)

如果不使用dynamic,可能会更好。使用JObject,您可以使用字符串将其编入索引:

string variableName = "something";
var myJSON = JObject.Parse(data);
string v1 = myJSON[variableName + "1"];
string v2 = myJSON[variableName + "2"];
//...etc.
  

更新

您可以使用myJSON.Count获取项目数。

所有这些都假设您的结构是平坦的,并且不需要钻取嵌套对象。

答案 1 :(得分:0)

您可以将数据反序列化为字典,然后遍历键。例如

var data = @"{ ""variable1"":""var1"", ""variable2"":""var2"", ""variable3"":""var3"", ""variable4"":""var4"" }";
var deserializedDictionary  = JsonConvert.DeserializeObject<Dictionary<string,string>>(data);
foreach(var item in deserializedDictionary)
{
    Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");
}

尽管在上面的示例中我假设值是一个字符串,但是它可以是任何对象。