- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在从 Sitecore API 解析以下 JSON 对象时遇到问题:
{
"statusCode": 200,
"result": {
"totalCount": 1,
"resultCount": 1,
"items": [
{
"Category": "PAGE",
"Database": "web",
"DisplayName": "Profile",
"HasChildren": false,
"Icon": "/temp/IconCache/Network/32x32/earth.png",
"ID": "{7F51AD8B-4A8B-4DA5-87A8-374BEB900801}",
"Language": "en",
"LongID": "/{11111111-1111-1111-1111-111111111111}/{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}/{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}/{D608D67E-01F1-493C-B3B7-23176449CD10}/{7F51AD8B-4A8B-4DA5-87A8-374BEB900801}",
"MediaUrl": "/~/icon/Network/48x48/earth.png.aspx",
"Name": "Profile",
"Path": "/sitecore/content/COMPANY/SITE/PAGE",
"Template": "User Defined/COMPANY/Pages/Base Page",
"TemplateId": "{661AFEB1-8ECE-4D65-80A6-40AC160898D8}",
"TemplateName": "Base Page",
"Url": "~/link.aspx?_id=7F51AD8B4A8B4DA587A8374BEB900801&_z=z",
"Version": 1,
"Fields": {
"{B370A8AA-C7D1-4B79-9BD2-C94675808949}": {
"Name": "Title",
"Type": "Single-Line Text",
"Value": "Profile"
},
"{55373261-F234-444F-9967-E4821C9ACD2C}": {
"Name": "Search Results Text",
"Type": "Multi-Line Text",
"Value": ""
},
"{F7DBD22A-6BE1-4FEE-920C-DF1E688A1224}": {
"Name": "Meta Description",
"Type": "Multi-Line Text",
"Value": "Profile Page"
},
"{BC5B4A35-9526-4DF3-A1EB-3C6A01A52777}": {
"Name": "Tags",
"Type": "Multilist",
"Value": ""
},
"{2AFDEE31-FF47-4184-9BB5-3D17E283F110}": {
"Name": "Enable Meta NoIndex",
"Type": "Checkbox",
"Value": ""
},
"{31D6E245-E63A-4749-90F5-225892F29DB7}": {
"Name": "Enable Meta NoFollow",
"Type": "Checkbox",
"Value": ""
},
"{A79C9551-A6F4-4E9E-9CF4-3DE68C1E9BAB}": {
"Name": "Browser Title",
"Type": "Single-Line Text",
"Value": ""
},
"{4A907846-00BB-4417-BA0E-21B16F5F9875}": {
"Name": "Open Text",
"Type": "Multi-Line Text",
"Value": ""
}
}
}
]
}
}
问题出在 Fields 属性上 - 它应该是某种字段列表,但它们看起来像是单独的嵌套属性,其中每个属性的名称都是“{id}”。
我想做类似 JsonConvert.DeserializeObject<Sitecore.Data.Items.Item>(jsonString)
的事情,但我还没有成功。我真的宁愿不必编写自定义反序列化器,但它看起来是我唯一的选择。
即使我想使用动态类型,我也可以达到 jObject.result.items[0].Fields... 但是然后呢?我不能假定我将始终知道这些字段的 ID。
所以,长话短说,这是我的问题:
就其值(value)而言,此对象来自 Sitecore API,我使用此方法从 C# 应用程序调用它:
var request = (HttpWebRequest)WebRequest.Create(itemUrl);
request.Headers.Add("X-Scitemwebapi-Username", apiUsername);
request.Headers.Add("X-Scitemwebapi-Password", password);
// get response
var response = (HttpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
(我认为这对于具体解决 JSON 问题并不重要,但也许有人以前见过这个并且知道另一种解决方法?)
提前致谢。
最佳答案
我使用 JSON.Net 完成了如下操作:
string json = "{\"statusCode\": 200, \"result\": { \"totalCount\": 1, \"resultCount\": 1, \"items\": [ { \"Category\": \"PAGE\", \"Database\": \"web\", \"DisplayName\": \"Profile\", \"HasChildren\": false, \"Icon\": \"/temp/IconCache/Network/32x32/earth.png\", \"ID\": \"{7F51AD8B-4A8B-4DA5-87A8-374BEB900801}\", \"Language\": \"en\", \"LongID\": \"/{11111111-1111-1111-1111-111111111111}/{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}/{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}/{D608D67E-01F1-493C-B3B7-23176449CD10}/{7F51AD8B-4A8B-4DA5-87A8-374BEB900801}\", \"MediaUrl\": \"/~/icon/Network/48x48/earth.png.aspx\", \"Name\": \"Profile\", \"Path\": \"/sitecore/content/COMPANY/SITE/PAGE\", \"Template\": \"User Defined/COMPANY/Pages/Base Page\", \"TemplateId\": \"{661AFEB1-8ECE-4D65-80A6-40AC160898D8}\", \"TemplateName\": \"Base Page\", \"Url\": \"~/link.aspx?_id=7F51AD8B4A8B4DA587A8374BEB900801&_z=z\", \"Version\": 1, \"Fields\": { \"{B370A8AA-C7D1-4B79-9BD2-C94675808949}\": { \"Name\": \"Title\", \"Type\": \"Single-Line Text\", \"Value\": \"Profile\" }, \"{55373261-F234-444F-9967-E4821C9ACD2C}\": { \"Name\": \"Search Results Text\", \"Type\": \"Multi-Line Text\", \"Value\": \"\" }, \"{F7DBD22A-6BE1-4FEE-920C-DF1E688A1224}\": { \"Name\": \"Meta Description\", \"Type\": \"Multi-Line Text\", \"Value\": \"Profile Page\" }, \"{BC5B4A35-9526-4DF3-A1EB-3C6A01A52777}\": { \"Name\": \"Tags\", \"Type\": \"Multilist\", \"Value\": \"\" }, \"{2AFDEE31-FF47-4184-9BB5-3D17E283F110}\": { \"Name\": \"Enable Meta NoIndex\", \"Type\": \"Checkbox\", \"Value\": \"\" }, \"{31D6E245-E63A-4749-90F5-225892F29DB7}\": { \"Name\": \"Enable Meta NoFollow\", \"Type\": \"Checkbox\", \"Value\": \"\" }, \"{A79C9551-A6F4-4E9E-9CF4-3DE68C1E9BAB}\": { \"Name\": \"Browser Title\", \"Type\": \"Single-Line Text\", \"Value\": \"\" }, \"{4A907846-00BB-4417-BA0E-21B16F5F9875}\": { \"Name\": \"Open Text\", \"Type\": \"Multi-Line Text\", \"Value\": \"\" } } } ] }}";
JToken desJson = JObject.Parse(json);
现在要获取项目(例如,statusCode),您可以执行以下操作:
int statusCode = (int)desJson.SelectToken("statusCode");
Console.WriteLine(statusCode);
回答:
希望这对您有所帮助。
要查看字段,例如,您可以这样做:
JToken desJson = JObject.Parse(json);
var test = desJson.SelectToken("result");
Console.WriteLine(test.Last.Last[0].Last);
您也可以在循环或递归中执行此操作,而不是 test.Last.Last[0].Last
。那只是一个例子。
结果:
关于c# - 解析从 Sitecore Item Web API 返回的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31321513/
我已将 Active Directory 模块与 sitecore 集成,我可以在 sitecore 用户管理器中看到广告中的用户。现在我想验证广告用户是否可以登录 sitecore。我为用户分配了
有没有办法通过代码访问Sitecore设置。 我感兴趣的具体设置是数据文件夹路径。 最佳答案 如果您想获得其他设置,您可能需要尝试:- Sitecore.Configuration.Settings.
根据 Sitecore 数据定义引用,版本 6.4,第 4.3.1 节: Sitecore processes queries using the fasted technology possible
Sitecore 6.6(更新4)。 MaxMind具有与DMS集成的Sitecore-specific lookup service选项。 MaxMind还具有一些更通用的Web服务。 可以将“通用
当我在 Sitecore 单行字段文本框中按 ENTER 时,它会呈现两个换行符 此问题仅出现在 Chrome/Firefox 中。在 IE ENTER 中只导致一个 我可以在这些浏览器中以某种方式
好奇为什么我无法从那里取回任何物品 HistoryManager.GetHistory(database, fromThisDate, toThisDate) ,我查看了 Sitecore 数据库,发
我们正在使用Sitecore 6.2,并且要求在Sitecore管理网站上使用SSL。 除了将内容保存在Rich Text编辑器中(单击“接受”按钮)时,所有指向媒体库项目的URL都将添加“ http
如何以编程方式登录 Sitecore? 例如,如果您想将 Sitecore API 的一小部分连接到桌面应用程序,则需要先登录到 sitecore 才能访问数据库等。 这可以做到吗? 最佳答案 正如
我已将 Sitecore 安装设置到两个不同的 IIS 站点。一个包含所有 Sitecore 管理文件,另一个包含共享相同 Web.config 的干净 Web 文件,而我的 Data 文件夹位于这两
我在一台开发服务器上安装了 sitecore,并将站点根文件夹复制到一堆开发机器上。此过程在 7 台计算机中的 6 台上运行良好,我们可以正常看到 sitecore 登录和内容编辑器页面,并通过 II
我已经设置了一个本地 Sitecore 环境,所有 sql 和 mongodb 数据库都可以正常工作。 除了我在体验文件(联系人)中没有获得任何数据 我看到 mongo 中的tracking_cont
我的 Sitecore 网站要求用户名是电子邮件地址。 我可以在代码中成功创建用户,但每当我尝试在用户管理器上的 Sitecore CMS 中手动创建 Extranet 用户时,都会引发电子邮件用户名
客户询问 Sitecore 中是否有任何地方内容作者可以为内容项的单个版本添加内部注释。该注释可能会说“我更改了内容字段以包含更新的描述”之类的内容。这与您在工作流程中提交项目时简单地添加评论不同。他
现在我的 sitecore 工作流程遇到问题。问题如下: 我的模板标准值已设置工作流程和默认工作流程字段集。工作流程状态设置为草稿。但是,每次我从此模板创建项目时,它都不会继承工作流程部分字段,所有字
我在 sitecore 用户管理器中遇到了这个奇怪的错误。我一打开用户管理器就收到此错误我无法将用户分配给角色。 有人可以帮忙吗? 提前致谢。 P.S > 以防万一它无法正确显示:http://www
我知道有一个 SortOrder 字段。然而,在我看来,该字段很多次都是空的,直到您真正开始在列表中四处移动内容项。然后,如果您有一个项目列表并四处移动其中一些项目,将为它们分配一个 SortOrde
我知道这听起来像是一个愚蠢的问题,但无数的谷歌搜索都没有给我想要的答案。我看到很多关于如何基于 Sitecore 模板等格式化电子邮件的数据,但没有关于实际发送邮件的信息。我是否需要通过 .net 代
我想 Hook item:renamed 事件来做一些处理。不过可能需要几分钟。事件处理程序是与正常管道执行异步执行还是同步执行?如果我需要自己执行此操作,是否有标准的 Sitecore 方法可以异步
我一直在浏览 Sitecore.Kernel,但似乎找不到 Sitecore 运行 Initialize 管道的位置。它是在每个页面请求上运行还是在应用程序启动时只运行一次?您能指出为此管道调用 Ru
我已经在 sitecore 中安装了重定向模块。在模块内部,我创建了“重定向网址”。在重定向网址中,我写了请求的网址“http://domainname/pagename”并从内容中选择了重定向到。但
我是一名优秀的程序员,十分优秀!