Árvore json de análise do Android

Eu tenho dados estruturados em JSON em árvore. Algo como

{
"result": [
    {
        "id": 1,
        "name": "test1"
    },
    {
        "id": 2,
        "name": "test12",
        "children": [
            {
                "id": 3,
                "name": "test123",
                "children": [
                    {
                        "id": 4,
                        "name": "test123"
                    }
                ]
            }
        ]
    }
]

}

modelo:

class DataEntity {
    int id;
    String name;
    List<DataEntity> childDataEntity;
}

Analisando via org.json

    List<DataEntity> categories = new ArrayList<DataEntity>();

private List<DataEntity> recursivellyParse(DataEntity entity, JSONObject object) throws JSONException {
    entity.setId(object.getInt("id"));
    entity.setName(object.getString("name"));
    if (object.has("children")) {
        JSONArray children = object.getJSONArray("children");
        for (int i = 0; i < children.length(); i++) {
            entity.setChildDataEntity(recursivellyParse(new DataEntity(), children.getJSONObject(i)));
            categories.add(entity);
        }
    }
    return categories;
}

ligar

  JSONObject jsonObject = new JSONObject(JSON);
        JSONArray jsonArray = jsonObject.getJSONArray("result");
        for (int i = 0; i < jsonArray.length(); i++) {
            recursivellyParse(new DataEntity(), jsonArray.getJSONObject(i));
        }

Mas esse caminho está errado. Após a execução do método, a lista preencheu os mesmos dados.

Como faço para analisar corretamente?

UPD: atualize o JSON.

questionAnswers(2)

yourAnswerToTheQuestion