从C#中的未知JSON内容创建无序列表

时间:2013-07-09 20:08:56

标签: c# jquery asp.net json

我希望创建一个类似于http://json.parser.online.fr/的树视图样式字段选择器。

用户可以从未知的JSON内容源中选择要使用的字段。

我想创建类似于http://mind2soft.com/labs/jquery/tree/的输出,但是在C#中创建内容

我有以下代码

JsonTextReader reader = new JsonTextReader(new StringReader(jsoncontent));
string output = @"<ul id='tree'>
                <li><a href='#'>Data Preview</a>
                <ul>";
while (reader.Read()) {
    if (reader.Value != null) {
        if (reader.TokenType == JsonToken.PropertyName) {
            output += "<li><a href=''>" + reader.Value.ToString() + "</a></li>";
        }

    } else {
        if (reader.TokenType == JsonToken.StartArray) {
            output += "<ul><li>";
        }
        if (reader.TokenType == JsonToken.EndArray) {
            output += "</li></ul>";
        }
        if (reader.TokenType == JsonToken.StartObject) {
            output += "<ul>";
        }
        if (reader.TokenType == JsonToken.EndObject) {
            output += "</ul>";
        }
    }
}

output += @"</ul>
            </li>
            </ul>";

然而,我想要的输出是创建多个'UL'标签,因为我同时启动数组和对象。

任何人都可以指导我朝正确的方向发展。

由于

1 个答案:

答案 0 :(得分:0)

if条件中的else替换为if else语句

if (reader.TokenType == JsonToken.StartArray) {
    output += "<ul><li>";
}
else if (reader.TokenType == JsonToken.EndArray) {
    output += "</li></ul>";
}
else if (reader.TokenType == JsonToken.StartObject) {
    output += "<ul>";
}
else if (reader.TokenType == JsonToken.EndObject) {
    output += "</ul>";
}

看起来每次迭代都满足多个条件