0

私のプロジェクトの1つで、異なるキー名のJSON配列を解析したいと思います。例えば

{ "details": [ 
    { "state": "myState1",
      "place": [
        { "name": "placeName" } ] },
    { "state": "myState2",
      "place": [
        { "name1": "placeName" } ] },
    { "state": "myState3", 
      "place": [
        { "name2": "placeName" } ] } }

したがって、このJSONではplace配列を見てください。name1、name2、name3 ...、。のような毎回のキー。また、常に同じJSONを取得する必要はありません。ある場合には、state1またはstate1とstate3のみ、ある場合にはstate1からstate50になります。

では、この配列から正確なデータを識別して解析するにはどうすればよいですか?

4

1 に答える 1

1

まず第一に、JSONは適切にフォーマットされていません。]最後の閉じ中括弧の前に閉じ角括弧がありません}

次に、変数名のプロパティを静的クラスに解析することはできませんが、それらをディクショナリに変換することはできます。変数で機能するマッピングクラスの例を次に示しますplaces

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);
}

プロパティの名前もplace変更される場合、それを解析する最も簡単な方法は、次の非常に緩く型付けされたクラスを使用することだと思います。

public class Wrap
{
   public List<Dictionary<string,object>> details { get; set; }
}

ここで、ディクショナリ内のオブジェクトは、JSONの値に応じた文字列またはプロパティのディクショナリになります。

于 2012-05-18T15:51:21.813 に答える