C# 为什么这些变量字段在json解析任务中会自动变为空值。
我的目标是从这个url中的json数据中获取数据值: 我将json数据放入名为SoMedata的对象中,并尝试创建循环来解析数据并写出json数据的ceratin部分 在第二个循环中,每当我从field中的一个字段赋值或将field中的一个字段值与值进行比较时,field变量的字段总是立即变为Null 我该怎么解决这个问题?这可能与字段是数组和SoMedata是对象有关C# 为什么这些变量字段在json解析任务中会自动变为空值。,c#,json,parsing,null,C#,Json,Parsing,Null,我的目标是从这个url中的json数据中获取数据值: 我将json数据放入名为SoMedata的对象中,并尝试创建循环来解析数据并写出json数据的ceratin部分 在第二个循环中,每当我从field中的一个字段赋值或将field中的一个字段值与值进行比较时,field变量的字段总是立即变为Null 我该怎么解决这个问题?这可能与字段是数组和SoMedata是对象有关 using altinget.code; using System; using System.Web.UI; using
using altinget.code;
using System;
using System.Web.UI;
using Altinget.Extensions;
using Newtonsoft.Json;
using System.Net;
namespace Altinget7.Controls
{
public partial class SoMeDebateBox : BaseControl
{
public string titleTooltip = "Ukendt indtil videre";
public static string link = "http://someeu.altinget.dk/json.php?q=0&d=24&s=0&src=fb&g=1&l=200";
public string title = "Skal hentes fra resourcer";
protected void Page_Load(object sender, EventArgs e)
{
//SoMetextOut.Text = "<link rel = \"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css\">";
Page.Trace.Write("Render Time", "DebateBox Start");
var web = new WebClient();
var output = web.DownloadString(link);
dynamic SoMedata = JsonConvert.DeserializeObject<dynamic>(output);
dynamic contentData;
dynamic checkvar;
SoMetextOut.Text = " <h3> Danske EU - parlamentarikere på Facebook</h3>";
foreach (var item in SoMedata)
{
if (item.Name == "content")
{
contentData = item.First;
foreach (var field in contentData)
{
checkvar = contentData.First;
checkvar = field;
checkvar = field.First;
if (field.First.Name == "author_full_name")
{
SoMetextOut.Text += " field.value";
}
}
SoMetextOut.Text += "<li>" + SoMedata.status.ToString() + "</li>";
}
}
SoMetextOut.Text = " <h3> Danske EU - parlamentarikere på Facebook</h3>";
SoMetextOut.Text += " <h6>Indlæg fra de seneste 24 timer sorteret efter flest interaktioner</h6>";
SoMetextOut.Text += "<div class=\"card mt-1 w-100\" style=\"background-color:#FFFFFF;box-shadow: 0px 4px 8px 0px rgba(0.75,0.75,0.75,0.75)\">"; //background-color:#d7bde2;
SoMetextOut.Text += "<div class=\"card-block\" style=\"padding: 10px 10px 10px 10px\">";
SoMetextOut.Text += "<ul>";
SoMetextOut.Text += "<li>" + SoMedata.status.ToString() + "</li>";
SoMetextOut.Text += "<li>" + SoMedata.template.ToString() + "</li>";
SoMetextOut.Text += "<li>" + SoMedata.id.ToString() + "</li>";
SoMetextOut.Text += "<li>" + SoMedata.title.ToString() + "</li>";
SoMetextOut.Text += "</ul> </div> </div>";
//lit.Text = String.Format("<div class=""{1}"">{0}</div>", InnerText, CssClass)
// Newtonsoft.Json.Linq.JProperty jProperty = new Newtonsoft.Json.Linq.JProperty(field);
}
}
使用altinget.code;
使用制度;
使用System.Web.UI;
使用Altinget.Extensions;
使用Newtonsoft.Json;
Net系统;
命名空间Altinget7.Controls
{
公共部分类SoMeDebateBox:BaseControl
{
公共字符串titleTooltip=“Ukendt indtil videre”;
公共静态字符串链接=”http://someeu.altinget.dk/json.php?q=0&d=24&s=0&src=fb&g=1&l=200";
公共字符串title=“Skal hentes fra resourcer”;
受保护的无效页面加载(对象发送方、事件参数e)
{
//SoMetextOut.Text=”“;
Page.Trace.Write(“呈现时间”,“DebateBox开始”);
var web=新的WebClient();
var输出=web.DownloadString(link);
dynamic SoMedata=JsonConvert.DeserializeObject(输出);
动态内容数据;
动态检验var;
Text=“Danske EU-parlamentarikere påFacebook”;
foreach(SoMedata中的变量项)
{
如果(item.Name==“content”)
{
contentData=项。首先;
foreach(contentData中的var字段)
{
checkvar=contentData.First;
checkvar=字段;
checkvar=field.First;
if(field.First.Name==“作者全名”)
{
SoMetextOut.Text+=“field.value”;
}
}
SoMetextOut.Text+=“”+SoMedata.status.ToString()+” ”;
}
}
Text=“Danske EU-parlamentarikere påFacebook”;
SoMetextOut.Text+=“Indlæg fra de SENSETE 24定时器排序器efter flest INTERACTIONER”;
SoMetextOut.Text+=“”//背景色:#d7bde2;
SoMetextOut.Text+=“”;
SoMetextOut.Text+=“”;
SoMetextOut.Text+=“- ”+SoMedata.status.ToString()+”
”;
SoMetextOut.Text+=“- ”+SoMedata.template.ToString()+”
”;
SoMetextOut.Text+=“- ”+SoMedata.id.ToString()+”
”;
SoMetextOut.Text+=“- ”+SoMedata.title.ToString()+”
”;
SoMetextOut.Text+=“
”;
//lit.Text=String.Format(“{0}”,InnerText,CssClass)
//Newtonsoft.Json.Linq.JProperty JProperty=new Newtonsoft.Json.Linq.JProperty(字段);
}
}
}您可以根据以下内容编写代码:
var data = JObject.Parse(json);
var status = (string)data["status"];
// ...
foreach(var content in data["content"])
{
var fullname = (string)content["author_full_name"];
// ...
}
你到底想从json中读什么?从这个url中:我想读:“标题”、“副标题”、“作者全名”、“帖子消息”和“帖子链接”。我已经这么做了。问题是我得到了一个包含属性变量的对象,这使得它更加复杂。