NewtonSoft JArray-如何使用LINQ选择多个元素 [英] NewtonSoft JArray - how to select multiple elements with LINQ
问题描述
我有一些JSON,然后将其解析为JArray对象.我想过滤JArray,以便它只有两个属性,即Title和BodyText.但是无论如何,我只能使用LINQ选择一个值.
I have some JSON which I then parse to JArray object. I want to filter the JArray so it then has only two properties, Title and BodyText. But whatever I try I can only select one value using LINQ.
[HttpGet]
public JsonResult AjaxGetNewsItems()
{
string json = JsonConvert.SerializeObject(news.GetNewsItems(), formatting:Formatting.Indented);
var v = JArray.Parse(json);
//var items =
// v.Where(
// x =>
// x["Title"].ToString() != string.Empty &&
// x["BodyText"].ToString() != string.Empty)
// .Select(x => x["Title"])
// .ToList();
var title = (string) v[0]["Title"];
var titleBodytext = from p in v
select v[0]["Title"]["BodyText"];
foreach (var item in titleBodytext)
{
}
//var titleBodytext =
// from c in v[0]["Title"]["BodyText"]
// group c by c
// into g
// select new { };
//JArray a = JArray.FromObject(news.GetNewsItems());
//string titleBodytext = (string) newsItems["Title"]["Bodytext"];
return new JsonResult()
{
Data = json,
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
MaxJsonLength = Int32.MaxValue
};
}
我想更改此代码:
var titleBodytext = from p in v
select v[0]["Title"]["BodyText"];
Title
和BodyText
是我的JArray中的两个键值.
Title
and BodyText
are two keys values in my JArray.
请参阅JArray对象的屏幕快照.元素0中有键值元素.
See screenshot of JArray object. In element 0 there are key value elements.
推荐答案
尝试这种方式:
var titleBodytext = from p in v
select new
{
Title = (string)p["Title"],
Text = (string)p["BodyText"]
};
或者,如果您确定v
始终仅包含一个元素:
Or if you're sure v
always contain only one element :
var titleBodytext = new
{
Title = (string)v[0]["Title"],
Text = (string)v[0]["BodyText"]
};
顺便说一句,您当前的代码似乎没有按照您的想法做.它在from
子句中具有p in v
,但是无论当前的p
是上下文如何,始终选择v[0]
.无论如何,在v
仅包含一个元素的情况下,这不会显示错误的行为.
BTW, your current code doesn't seems to do what you think. It has p in v
in the from
clause, but always select v[0]
regardless of current p
being the context. Anyway, this doesn't show wrong behavior in the case where v
only contain one element.
这篇关于NewtonSoft JArray-如何使用LINQ选择多个元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!