使用c#解析并迭代json对象来处理每个字段

使用c#解析并迭代json对象来处理每个字段,c#,json,C#,Json,这是一个非常简单的问题,但似乎找不到直接的答案。我读入一个JSON对象。然后我想解析它,能够直接寻址一个令牌或一个值,然后格式化它以写入一个文件输出,我将在另一个应用程序中使用它。我正在使用C#和Newtonsoft库 我的代码: JsonTextReader reader = new JsonTextReader(re); while (reader.Read()) { if (reader.Value != null) Console.WriteLine("Value: {0

这是一个非常简单的问题,但似乎找不到直接的答案。我读入一个JSON对象。然后我想解析它,能够直接寻址一个令牌或一个值,然后格式化它以写入一个文件输出,我将在另一个应用程序中使用它。我正在使用C#和Newtonsoft库

我的代码:

JsonTextReader reader = new JsonTextReader(re);
while (reader.Read())
{
    if (reader.Value != null)
    Console.WriteLine("Value: {0}", "This is the value <Tags>:  " + reader.Value);
}
JsonTextReader reader=新的JsonTextReader(re);
while(reader.Read())
{
if(reader.Value!=null)
WriteLine(“值:{0}”,“这是值:”+reader.Value);
}
我如何处理每一行?例如,desc,然后获取对游戏世界的引用。这地方一定很宽敞

谢谢


johnh

使用
JArray
JObject
对象,如下所示:

var json = System.IO.File.ReadAllText("YourJSONFilePath");
var objects = JArray.Parse(json);

foreach(JObject root in objects)
{
    foreach(KeyValuePair<String, JToken> tag in root)
    {
        var tagName = tag.Key;
        Console.WriteLine("Value: {0}", "This is the value <Tags>:  " + tagName);
    }
}
var json=System.IO.File.ReadAllText(“YourJSONFilePath”);
var objects=JArray.Parse(json);
foreach(对象中的作业对象根)
{
foreach(根目录中的KeyValuePair标记)
{
var tagName=tag.Key;
WriteLine(“值:{0}”,“这是值:“+标记名”);
}
}

在读卡器读取字符串时,请查看读卡器的属性。特别是在TokenType和Value属性上。如果你真的需要按顺序阅读,那就是方法。根据所读取的节点,令牌类型依次为StartObject、PropertyName、String等。基本上,每次看到PropertyName时,下一个就是属性值


请注意,使用其他技术可能会更好,但这要视情况而定。

给定一个
JToken令牌:

if (token.Type == JTokenType.Object)
{
    foreach (var pair in token as JObject)
    {
        string name = pair.Key;
        JToken child = pair.Value;
        //do something with the JSON properties
    }
}
else if (token.Type == JTokenType.Array)
{
    foreach (var child in token.Children())
    {
        //do something with the JSON array items
    }
}
else
{
    //do something with a JSON value
}

我看到这根线有点旧了。。。然而,卡尔·安德森,你的回答很有帮助。我只是添加了一点,这比我正在进行的3或4个嵌套foreach循环要好得多。。。请参阅下面的代码。谢谢你的帮助

JArray jsonResponse = JArray.Parse(content);
Debug.WriteLine("\n\njsonResponse: \n" + jsonResponse);

foreach (JObject root in jsonResponse)
{
    foreach (KeyValuePair<String, JToken> tag in root)
    {
        var tagName = tag.Key;
        var variable = tag.Value;
        Debug.WriteLine("Key: " + tagName + "  Value: " + variable);
    }
}
JArray-jsonResponse=JArray.Parse(content);
Debug.WriteLine(“\n\njsonResponse:\n”+jsonResponse);
foreach(jsonResponse中的作业对象根)
{
foreach(根目录中的KeyValuePair标记)
{
var tagName=tag.Key;
var变量=tag.Value;
Debug.WriteLine(“键:+标记名+”值:+变量);
}
}

请与我们的读者分享。价值