在libjson中确定JSONNode对象类型(Determine JSONNode object type in libjson)
我们正在将Json库从JsonCpp切换到libJson。 JsonCpp具有很好的函数来确定json值的对象类型。 是否有任何方法在libjson中获取此信息?
例如,使用JsonCpp我们有以下内容:
Json::Value property = properties[propertyName.get_utf8()]; if (property.isInt()) { // Do Something } else if (property.isUInt()) { // Do Something } else if (property.isDouble()) { // Do Something } else if ( property.isString() ) { // Do Something }
有没有办法确定JSONNode是否有字符串,int或double。 我知道你可以获得JSONNode类型,但是你可以获得该节点中值的对象类型。 例如,如果我有以下内容:
JSONNode root(JSON_NODE); node.push_back(JSONNode("", "node")); node.push_back(JSONNode("", 10)); node.push_back(JSONNode("", 21.5f)); node.push_back(JSONNode("", true));
是否有可能确定root中的第一个节点包含一个字符串,第二个节点是int,第三个是float等吗?
we are switching Json libaries from JsonCpp to libJson. JsonCpp has nice functions to determine the object type of a json value. Is there any equvialent way of getting this information in libjson?
For example, using JsonCpp we have the following:
Json::Value property = properties[propertyName.get_utf8()]; if (property.isInt()) { // Do Something } else if (property.isUInt()) { // Do Something } else if (property.isDouble()) { // Do Something } else if ( property.isString() ) { // Do Something }
Is there any way to determine if a JSONNode has a string, int or double. I know you can get the JSONNode type, but can you get the object type for the value within that node. For example, if I have the following:
JSONNode root(JSON_NODE); node.push_back(JSONNode("", "node")); node.push_back(JSONNode("", 10)); node.push_back(JSONNode("", 21.5f)); node.push_back(JSONNode("", true));
Is it possible to determine that the first node in root contains a string, the second an int, the third a float etc?
原文:https://stackoverflow.com/questions/13253362
最满意答案
将选项提取到临时数组中,排序,然后重建列表:
var my_options = $("#my_select option"); var selected = $("#my_select").val(); my_options.sort(function(a,b) { if (a.text > b.text) return 1; if (a.text < b.text) return -1; return 0 }) $("#my_select").empty().append( my_options ); $("#my_select").val(selected);
Mozilla的排序文档 (特别是compareFunction)和维基百科的排序算法页面都是相关的。
如果要使排序大小写不敏感,请使用
text.toLowerCase()
替换text
上面显示的排序功能说明了如何排序。 准确排序非英语语言可能很复杂(请参阅unicode排序规则算法 )。 在sort函数中使用localeCompare是一个很好的解决方案,例如:
my_options.sort(function(a,b) { return a.text.localeCompare(b.text); });
Extract options into a temporary array, sort, then rebuild the list:
var my_options = $("#my_select option"); var selected = $("#my_select").val(); my_options.sort(function(a,b) { if (a.text > b.text) return 1; if (a.text < b.text) return -1; return 0 }) $("#my_select").empty().append( my_options ); $("#my_select").val(selected);
Mozilla's sort documentation (specifically the compareFunction) and Wikipedia's Sorting Algorithm page are relevant.
If you want to make the sort case insensitive, replace
text
withtext.toLowerCase()
The sort function shown above illustrates how to sort. Sorting non-english languages accurately can be complex (see the unicode collation algorithm). Using localeCompare in the sort function is a good solution, eg:
my_options.sort(function(a,b) { return a.text.localeCompare(b.text); });
相关问答
更多-
options_for_select的第二个参数是选定的值: http : //guides.rubyonrails.org/form_helpers.html#option-tags-from-a-collection-of-arbitrary-objects options_for_select的第二个参数必须与期望的内部值完全相等。 特别是如果值是整数2,则不能将“2”传递给options_for_select - 您必须传递2.请注意从params散列中提取的值,因为它们都是字符串。 试试这个: < ...
-
使用选择选项获取多个选择框选项以保持选定状态(Getting Multiple Select Box Options to Stay Selected Using Chosen Select)[2022-06-10]
正如你所写的那样 implode()函数会将数组转换为字符串,因此没有使用in_array()逻辑 备选方案1 如果get_p ... -
尝试使用@ Html.DropDownListFor @Html.DropDownListFor(model => model.property, new SelectList(Model.dropdownlist, "Value", "Text"), new { @class = "form-control" }) 在控制器中,您还需要将下拉列表的值分配给Model.dropdownlist。 例如: var list = new SelectList(new[] { ...
-
将选项提取到临时数组中,排序,然后重建列表: var my_options = $("#my_select option"); var selected = $("#my_select").val(); my_options.sort(function(a,b) { if (a.text > b.text) return 1; if (a.text < b.text) return -1; return 0 }) $("#my_select").empty().append( m ...
-
你可以这样做: Elements selected = doc.select("select option[selected]"); 修改CSS查询的第一个select部分,以找出您需要的特定选项容器。 试试你的HTML。 You can do this: Elements selected = doc.select("select option[selected]"); Modify the first select part of the CSS query to winnow to the spe ...
-
我会忘记选择的项目是一个表单元素 - 将它们作为一个在选择第一个选择列表时动态创建/修改的ul。 然后你可以有一个隐藏的输入,当选择完成时 - 你可以遍历所选元素的列表并将它们传递给一个hiddeen输入 - 或其他mx将它们传递给一个输入,并将它们与表单的其余部分一起传递。 请注意,每个订单项现在都有一个特定的删除按钮 - 单击它可以删除该项目。 因此,必须在按钮上进行事件委托,因为在选择元素时将DOM添加到了DOM上。 $("#agregarFamilia").click(function() { ...
-
如何使用纯Javascript基于值对选择选项进行排序?(how to sort select options based on values using pure Javascript?)[2021-05-03]
好吧,既然你说你不能使用jquery或者不能修改java代码。 这是一个纯粹的JavaScript解决方案。 如果你为你的选择提供一个id会更好。 您可以将选项保存在数组中,然后通过比较每个选项中innerHTML的第一个字母charcode来使用sort函数。 在你的HTML中给出一个id最有效的方法可能因浏览器而异,但我认为使用一串html元素设置- 的innerHTML可以提供最佳性能。 这是一个工作演示 $("#select").change(function() {
var val = this.value,
lis = '';
for(var i=1; i <= val; i++) {
lis += '
- Ticket ' + i + ' '; } document.getElementById('list').inne ...
您不能将ko.utils.arrayGetDistinctValues()用于包含对象的数组。 此函数仅适用于原始值,另一方面,对象可以具有相同的属性,而不是它们本身相同。 使用这样的东西: self.UniquePlayers = ko.computed(function () { var uniquePlayers = [], index = {}; ko.utils.arrayForEach(self.Players(), function (p) { var ful ...我认为如果替换此行,您的代码应该起作用: response.setHeader("Refresh","10;url="/SiteAvailabilityServlet?ursel="+selectedUrl); 有了这个 : response.setHeader("Refresh","10;url=/SiteAvailabilityServlet?urlsel="+ selopt); 改变的是: "从标题中的URL中删除了" ,我不明白为什么它应该在那里; 这是urlsel而不是ursel ; 为什么s ...相关文章
更多- Jackson树模型JsonNode
- Object Oriented Programming
- ServletOutputStream cannot be resolved to a type
- Guava学习笔记:复写的Object常用方法
- HTTP Content-Type 内容类型详解
- Cannot expose request attribute 'website' because of an existing model object of the same name 的解决方案
- 微信公众号接口添加菜单时错误(errcode":40017 invalid button type)
- 关于两种对象类型使用
- maven项目使用SOLR时报 previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest" 错的解决方法
- The content of element type "package" must match "...
最新问答
更多- 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
- 如何通过引用返回对象?(How is returning an object by reference possible?)
- 矩阵如何存储在内存中?(How are matrices stored in memory?)
- 每个请求的Java新会话?(Java New Session For Each Request?)
- css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
- 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
- xcode语法颜色编码解释?(xcode syntax color coding explained?)
- 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
- 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
- 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
- 西安哪有PLC可控制编程的培训
- 在Entity Framework中选择基类(Select base class in Entity Framework)
- 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
- 电脑二级VF有什么用
- Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
- 金华英语角.
- 手机软件如何制作
- 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
- 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
- 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
- Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
- 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
- python的访问器方法有哪些
- DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
- 在Ruby中对组合进行排序(Sorting a combination in Ruby)
- 网站开发的流程?
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。