首页 \ 问答 \ 在libjson中确定JSONNode对象类型(Determine JSONNode object type in libjson)

在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
更新时间:2023-11-02 17:11

最满意答案

将选项提取到临时数组中,排序,然后重建列表:

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 with text.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);
});

相关问答

更多

相关文章

更多

最新问答

更多
  • 获取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的基本操作命令。。。