这是我从.NET上的请求得到的JSON:
{
"id": "110355660738",
"picture": {
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/1027085_12033235063_5234302342947_n.jpg",
"is_silhouette": false
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想用(或许?)LINQ捕捉字段"url".我做了很多请求,这有点不同.所以我不会创建一个C#类并且每次都反序列化它.
它是一种提取单个字段的方法吗?谢谢!
Json.NET定义了一种JConstructor类型.
这很令人困惑,因为(据我所知)构造函数不是JSON的一部分.我仔细检查了JSON规范并浏览了json.org但却找不到任何东西.网上任何地方似乎都没有关于此类型的文档.
因为Json.NET被如此广泛地使用(它甚至由微软委托),我认为必须有一些合理的动机将这种表示包含在对象模型中.问题是,我决定动机的任何尝试都只是猜测.
我测试了类型及其序列化,明显的行为是只包装JavaScript代码new constructorName(...),例如:
new JConstructor("ctorExample",
new JValue("value"),
new JObject(
new JProperty("prop1", new JValue(1)),
new JProperty("prop2", new JValue(2)))
)
.ToString()
Run Code Online (Sandbox Code Playgroud)
输出
new ctorExample(
"value",
{
"prop1": 1,
"prop2": 2
}
)
Run Code Online (Sandbox Code Playgroud)
那么,JConstructor用于表示的类型是什么以及为什么存在?
这是我的json字符串.
{
"?xml" : {
"@version" : "1.0",
"@encoding" : "UTF-8"
},
"DataFeed" : {
"@FeedName" : "issuerDetails",
"SecurityDetails" : {
"Security" : {
"SecurityID" : {
"@idValue" : "AAPL-NSDQ",
"@fiscalYearEnd" : "2016-12-31T00:00:00.00"
},
"FinancialModels" : {
"FinancialModel" : [{
"@id" : "780",
"@name" : "Estimates - Energy",
"@clientCode" : "A",
"Values" : [{
"@name" : "EBITDA",
"@clientCode" : "EBITDA",
"@currency" : "C$",
"Value" : [{
"@year" : "2014",
"#text" : "555.64"
}, {
"@year" : "2015",
"#text" : "-538.986" …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取SEDOL和ADP值的列表.以下是我的json文字:
{
"DataFeed" : {
"@FeedName" : "AdminData",
"Issuer" : [{
"id" : "1528",
"name" : "ZYZ.A a Test Company",
"clientCode" : "ZYZ.A",
"securities" : {
"Security" : {
"id" : "1537",
"sedol" : "SEDOL111",
"coverage" : {
"Coverage" : [{
"analyst" : {
"@id" : "164",
"@clientCode" : "SJ",
"@firstName" : "Steve",
"@lastName" : "Jobs",
"@rank" : "1"
}
}, {
"analyst" : {
"@id" : "261",
"@clientCode" : "BG",
"@firstName" : "Bill",
"@lastName" : "Gates",
"@rank" : "2" …Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
var joWork = ((JObject) x).Properties()
.Where(p => p.Value.Type == JTokenType.String).ToList();
Run Code Online (Sandbox Code Playgroud)
我结束了List<JProperty>.
有没有一种快速的方法使用Linq或JSON.NET函数将该List<JProperty>对象转换为JObject而无需在循环中从头开始构建JObject?
我有一个带有 JSON 的 JObject:
{"name" : "user1", "groups" : ["group 1", "group2"]}
Run Code Online (Sandbox Code Playgroud)
我想按名称删除一组。所以我有一个这样的代码:
JObject userJson = JObject.Parse(user);
JArray groups = userJson["groups"] as JArray;
JToken group = new JValue (groupName);
groups.Remove(group);
Run Code Online (Sandbox Code Playgroud)
但是 JArray.remove(Jtoken item) 方法返回 false(这意味着它不能被删除)。这里的信息:
https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JArray_Remove.htm
所以试图设置参数JToken group = new JValue (groupName); JToken group = new JValue (groupName); as JToken,JValue group = new JValue (groupName);但它不起作用:S
这家伙很好地解释了 JToken 层次结构,但我不知道我做错了什么。
使用Json.NET时,我试图使用"JSON to LINQ"支持动态创建JSON结构.
在下面,jObject是一个JObject和JObject.Add采用(字符串,JToken).但是,我无法找到如何添加Undefined或Null标记 - 我也无法找到如何使用适当的Null/Undefined类型创建JValues.
string value = GetValue();
if (value == "undefined") {
jObject.Add(key, /* how to add "Undefined" token? */);
} else if (value == "null") {
jObject.Add(key, /* how to add "Null" token? */);
} else {
jObject.Add(key, new JToken(value)); /* String value/token */
}
Run Code Online (Sandbox Code Playgroud)
如何为未定义的JSON显式添加JToken/JValue?JSON Null怎么样?