如何动态访问所有孩子?

时间:2019-03-25 05:28:05

标签: c# json unity3d

我有一些产品的json,按类别分类,例如:

{
  "Shoes": [
    { "title": "Product One", "price": 100 ... },
    ....
  ],
  "Hats": [
    { "title": "Product 23", "price": 12.2 ... },
    ...
  ]
}

然后,像这样加载:

保存到StreamingAssets / products.json。

public class Products {
    public List<Shoes> Shoes;
    public List<Hats> Hats;

    public static Products CreateFromJSON(string json) {

        string filePath = Path.Combine(Application.streamingAssetsPath, "products.json");
        if (File.Exists(filePath)) {
            string dataAsJson = File.ReadAllText(filePath);
            Products p = JsonUtility.FromJson<Products>(dataAsJson);
            return p;
        }

        Debug.Log("Missing JSON file: " + filePath);
        return null;
    }
}


public class Shoes: Model { }

public class Hats: Model { }

public class Model {
    public string title;
    public int price;
    public string sprite;
    ...
}

可以正常工作,可以加载/解析...,但是

我想动态访问产品,以便能够在Products循环foreach中循环访问Products[nameOfsubCategory][0].title

Products.Shoes[0].title当前正在实施,但这不是一个好习惯,也没有意义。

1 个答案:

答案 0 :(得分:0)

检出Linq:您可以执行诸如products.Where(p=>p.price>100)之类的事情以及许多其他事情。