C# 使用不同的keyvalue解析Json数组

C# 使用不同的keyvalue解析Json数组,c#,json,C#,Json,在我的一个项目中,我想解析一个具有不同键名的JSON数组。比如说 { "details": [ { "state": "myState1", "place": [ { "name": "placeName" } ] }, { "state": "myState2", "place": [ { "name1": "placeName" } ] }, { "state": "myState3", "pla

在我的一个项目中,我想解析一个具有不同键名的JSON数组。比如说

{ "details": [ 
    { "state": "myState1",
      "place": [
        { "name": "placeName" } ] },
    { "state": "myState2",
      "place": [
        { "name1": "placeName" } ] },
    { "state": "myState3", 
      "place": [
        { "name2": "placeName" } ] } }
因此,在这个JSON中,请查看place数组。每个时间键,如name1、name2、name3。。。, 。而且,也不必始终获取相同的JSON。在一段时间内,只有状态1或状态1和状态3,在一段时间内,状态1到状态50


那么我如何识别和解析这个数组中的精确数据呢?首先,你的JSON格式不好。您错过了最后一个结束方括号之前的结束方括号
]

然后,您不能将变量名属性解析为静态类,但可以将它们转换为字典。下面是一个使用变量
位置
的映射类示例:

public class Details
{
    public string state { get; set; }
    public List<Dictionary<string, string>> place { get; set; }
}
public class Wrap
{
    public Details[] details { get; set; }
}

static void Main(string[] args)
{
    string txt = File.ReadAllText("MyJSONFile.txt");
    JavaScriptSerializer ser = new JavaScriptSerializer();
    var data = ser.Deserialize<Wrap>(txt);
}

根据JSON中的值,字典中的对象将是字符串或属性字典。

类似的问题,我想……你不能用“名称”替换“名称(n)”吗?如果是这样的话,问题就解决了。我认为你误解了如何使用json。要么解析,要么不解析。json结果与数据的结构以及使用的解析器有关。如果您想获得地名,您必须查询它,可能需要在字典上使用linq来获得“place”上的值。不要担心“place”中的对象不一样(它们有不同的键),这会使您的查询更加困难。抱歉,这不是我的实际问题。我正在使用c代码来解析这个jason。为此,我使用一个类来存储keyvalue。所以在这个类中,我想声明用于存储这些键值的数据成员。所以这些数据成员应该有相同的名称(键名)。因此,如果密钥不同(不同的估价师),我如何解析该JSON请同时发布您的C#代码。谢谢您的回答。有没有可能在dataSorry中计算记录的详细信息,我想我不明白你的问题。。。难道细节不够多吗?算够了吗?对不起。不仅是计数,我还想读取位置列表中的每个值。因此,对于第一次读取计数,并基于该计数,使用循环读取列表中的所有值。@prasobhTK:我的建议是使用debug watch查看反序列化对象。一旦您理解了结果结构,迭代其中的列表/字典应该不是问题。。。
public class Wrap
{
   public List<Dictionary<string,object>> details { get; set; }
}