C# 用C访问JSON主体#
我需要用C#访问JSON代码的主体。访问标题是可行的,但它与主体不起作用,我在网上找不到任何东西。 我有这个JSON代码C# 用C访问JSON主体#,c#,json,json.net,marshalling,C#,Json,Json.net,Marshalling,我需要用C#访问JSON代码的主体。访问标题是可行的,但它与主体不起作用,我在网上找不到任何东西。 我有这个JSON代码 `{ "Example": { "Header": [ [ "Header1", "Header2",
`{
"Example": {
"Header": [
[
"Header1",
"Header2",
"Header3",
"Header4"
]
],
"Body": [
{
"Header1": "BlaBla",
"Header2": 0,
"Header3": 20,
"Header4": 32
},
{
"Header1": "BlaBlaBla",
"Header2": 22,
"Header3": 35,
"Header4": 25
},
......`
但是,我可以使用以下代码访问标题:
JArray headers = locationsObject["Header"] as JArray;
JArray header = headers.Last as JArray; //Last Header
如果我对主体执行相同操作,则为空:
JArray bodys = locationsObject["Body"] as JArray; //all bodys -> it works here
JArray body = bodys.First as JArray; //First body -> this one is null!!!
我需要体内的整数。我用的是Newtonsoft。有人能帮我吗?多谢各位 我建议您看看在c#中序列化/反序列化json。
如果您没有json的类表示形式 您的主要代码行如下所示:
exObj = JsonSerializer.Deserialize<ExampleObject>(jsonString);
exObj=JsonSerializer.Deserialize(jsonString);
它将是:字符串头1=exObj.Body.header1 一种方法是使用C#的“动态”变量类型,这是专门为函数式编程语言设计的。它不是类型安全的,也不是强类型的,但您可以访问结果中的所有值 不过,我强烈建议您创建模仿您试图反序列化的json的类,因为它将为您提供强大的类型和智能感知 下面是一个如何使用dynamic的示例。您需要安装NewtonSoft.Json Nuget包才能正常运行
using Newtonsoft.Json;
using System;
namespace JsonDeserialized
{
class Program
{
static void Main(string[] args)
{
string json = @"{
'Example':
{ 'Header':
[
[
'Header1',
'Header2',
'Header3',
'Header4'
]
],
'Body':
[
{
'Header1': 'BlaBla',
'Header2': 0,
'Header3': 20,
'Header4': 32
},
{
'Header1': 'BlaBlaBla',
'Header2': 22,
'Header3': 35,
'Header4': 25
}
]
}
}";
var result = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(result.Example);
foreach (var header in result.Example.Header[0])
{
Console.WriteLine(header);
}
Console.WriteLine(result.Example.Header[0][0]);
}
}
}
您的第一个身体不是一个可能是问题根源的JArray,而是一个作业对象,您可以尝试以下代码,它应该可以正常工作
var bodys = locationsObject["Body"] as JArray;
var body = bodys[0];
您还可以使用它进行更精细的操作。这正是我要搜索的!非常感谢你!
var bodys = locationsObject["Body"] as JArray;
var body = bodys[0];