相关疑难解决方法(0)

使用Unix工具解析JSON

我正在尝试解析从curl请求返回的JSON,如下所示:

curl 'http://twitter.com/users/username.json' |
    sed -e 's/[{}]/''/g' | 
    awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}'
Run Code Online (Sandbox Code Playgroud)

以上将JSON拆分为字段,例如:

% ...
"geo_enabled":false
"friends_count":245
"profile_text_color":"000000"
"status":"in_reply_to_screen_name":null
"source":"web"
"truncated":false
"text":"My status"
"favorited":false
% ...
Run Code Online (Sandbox Code Playgroud)

如何打印特定字段(用-v k=text?表示)?

bash parsing json

794
推荐指数
25
解决办法
87万
查看次数

是否有JSON等效的XQuery/XPath?

在复杂的JSON数组和哈希中搜索项目时,例如:

[
    { "id": 1, "name": "One", "objects": [
        { "id": 1, "name": "Response 1", "objects": [
            // etc.
        }]
    }
]
Run Code Online (Sandbox Code Playgroud)

我可以用某种查询语言来查找项目in [0].objects where id = 3吗?

javascript xpath json xquery

213
推荐指数
14
解决办法
10万
查看次数

什么是JSON的良好CLI工具?

一般问题

虽然我可以诊断事件的根本原因,确定有多少用户受到影响,或蒸馏时间日志,以评估性能和近期代码更改吞吐量的影响,我的工具保持不变:grep,awk,sed,tr,uniq,sort,zcat,tail,head,join,和split.为了将它们粘合在一起,Unix为我们提供了管道,并且我们有更好的过滤xargs.如果这些让我失望,那就永远都是perl -e.

这些工具非常适合处理CSV文件,制表符分隔文件,具有可预测行格式的日志文件或具有逗号分隔键值对的文件.换句话说,每行都没有上下文的文件.

XML类似物

我最近需要浏览千兆字节的XML来构建用户的直方图.使用我的工具这很容易,但对于更复杂的查询,正常的方法会崩溃.假设我的文件包含以下内容:

<foo user="me">
    <baz key="zoidberg" value="squid" />
    <baz key="leela"    value="cyclops" />
    <baz key="fry"      value="rube" />
</foo>
Run Code Online (Sandbox Code Playgroud)

让我们说我想生成一个从用户到平均<baz>每个s 的映射<foo>.逐行处理不再是一个选项:我需要知道<foo>我正在检查哪个用户,所以我知道要更新的平均值.完成这项任务的任何类型的Unix一行都可能是不可理解的.

幸运的是,在XML-land中,我们有很多精彩的技术,如XPath,XQuery和XSLT来帮助我们.

以前,我已经习惯使用精彩的XML::XPathPerl模块来完成上面的查询,但在找到可以针对当前窗口运行XPath表达式TextMate插件后,我停止编写一次性Perl脚本来查询XML.我刚刚发现了正在安装的XMLStarlet,因为我输入了这个,并且我期待将来使用它.

JSON解决方案?

所以这引出了我的问题:JSON有没有这样的工具?一些调查任务要求我对JSON文件进行类似的查询只是时间问题,并且没有像XPath和XSLT这样的工具,这样的任务将会困难得多.如果我有一堆看起来像这样的JSON:

{
  "firstName": "Bender",
  "lastName": "Robot",
  "age": 200,
  "address": {
    "streetAddress": "123",
    "city": "New …
Run Code Online (Sandbox Code Playgroud)

xslt xpath command-line json

59
推荐指数
4
解决办法
2万
查看次数

在javascript中查询数组以获取我想要的项目的最佳方法是什么?

我有一个像这样的数组(这里有超过3000个对象而不是3个):

items = [{name:'charlie', age:'16'}, {name:'ben', age:'18'}, {name:'steve', age:'18'}]
Run Code Online (Sandbox Code Playgroud)

只返回18岁人物的最佳方法是什么?所以我想:

items = [{name:'ben', age:'18'}, {name:'steve', age:'18'}]
Run Code Online (Sandbox Code Playgroud)

我能想到的最好的是(使用jQuery):

newArray = []
$.each(items, function(index, item) {
    if(item.age=='18') {
        newArray.push(item)
    }
})
Run Code Online (Sandbox Code Playgroud)

考虑到有3000万个物体,而且我将一次进行多达五十次的比较,那就是很多循环.有没有更好的办法?

javascript arrays jquery

29
推荐指数
3
解决办法
4万
查看次数

JSON的结构化查询语言(在Python中)

我正在研究一个输出JSON文件的系统,我使用Python来解析数据并在UI(PySide)中显示它.我现在想对该系统添加过滤,我认为不是编写查询系统,如果有一个用于JSON(在Python中),那将节省我很多开发时间.我找到了这个帖子:

是否有JSON的查询语言?

但对于基于Web的系统来说更是如此.关于Python等价的任何想法?

编辑[为清晰起见]:

我将生成的数据格式如下:

{
    "Operations": [
    {
        "OpID": "0", 
        "type": "callback", 
        "stringTag1": "foo1", 
        "stringTag2": "FooMsg", 
        "Children": [...],
        "value": "0.000694053"
   },
   {
        "OpID": "1", 
        "type": "callback", 
        "stringTag1": "moo1", 
        "string2": "MooMsg", 
        "Children": [...],
        "value": "0.000468427"
   }
}
Run Code Online (Sandbox Code Playgroud)

其中'Children'可以是同一事物的嵌套数组(其他操作).系统将构建为允许用户添加自己的标签以及数据.我希望有一个查询系统,允许用户定义自己的"过滤器",因此有关查询语言的问题.如果有什么东西可以让我做类似"SELECT*WHERE"的类型"=="回调"并获得必要的操作,那就太好了.

Pync的建议很有意思,我来看看.

python sql json

6
推荐指数
2
解决办法
5945
查看次数

在嵌套的Python字典中搜索密钥

我有一些像这样的Python词典:

A = {id: {idnumber: condition},.... 
Run Code Online (Sandbox Code Playgroud)

例如

A = {1: {11 : 567.54}, 2: {14 : 123.13}, .....
Run Code Online (Sandbox Code Playgroud)

我需要搜索字典中是否有任何字典idnumber == 11并使用condition.但如果在整个字典中没有idnumber == 11,我需要继续下一个字典.

这是我的尝试:

for id, idnumber in A.iteritems():
    if 11 in idnumber.keys(): 
       calculate = ......
    else:
       break
Run Code Online (Sandbox Code Playgroud)

python recursion dictionary nested

5
推荐指数
2
解决办法
8655
查看次数

如何查询一个json文件?

这是我想解析的文件

  1. 我从 JSON 格式的网络服务接收文件。
  2. 我想以显示美国总统姓名的方式解析内容
{
    "response": {
        "result": {
            "Countries": {
                "row": [
                    {
                        "no": "1",
                        "FL": [
                            {
                                "content": "USA",
                                "val": "Country"
                            },
                            {
                                "content": "Barack Obama",
                                "val": "President"
                            }
                        ]
                    },
                    {
                        "no": "2",
                        "FL": [
                            {
                                "content": "Cuba",
                                "val": "Country"
                            },
                            {
                                "content": "Raul Castro",
                                "val": "President"
                            }
                        ]
                    }
                ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

预期输出

{ presidents: [
    { "name": "Barack Obama"}
    ]
}
Run Code Online (Sandbox Code Playgroud)

你能提供一个使用一种 JSON XPath 的解决方案吗?

javascript xpath json jsonpath typescript

4
推荐指数
1
解决办法
2万
查看次数

javascript通过使用Regex匹配键从JSON对象检索值

我有以下javascript对象文字(摘录)

var foo = {"hello[35]":100,"goodbye[45]":42};
Run Code Online (Sandbox Code Playgroud)

我有以下查询:

var query = "hello"
Run Code Online (Sandbox Code Playgroud)

我想调用foo [query]来获取值100,但是有一个[35]我不一定知道它的值.我确信我会得到一个独特的比赛.有没有办法输入查询是某种javascript正则表达式?即

Regex = /hello/
foo[Regex]
100
Run Code Online (Sandbox Code Playgroud)

原谅这个菜鸟问题......

javascript regex

1
推荐指数
1
解决办法
1万
查看次数

从json数组中查找满足条件的特定元素的值

朋友我跟随json数组

[
   {
      "Rate":100.0,
      "MaterialID":"BOLT",
      "BrandName":"",
      "Description":"",
      "Unit":"KG",
      "TokenNumber":2
   },
   {
      "Rate":null,
      "MaterialID":"PLYWOOD",
      "BrandName":"",
      "Description":"",
      "Unit":"FT",
      "TokenNumber":2
   },
   {
      "Rate":null,
      "MaterialID":"SCREW 1.5 INCH",
      "BrandName":"",
      "Description":"",
      "Unit":"KG",
      "TokenNumber":2
   }
]
Run Code Online (Sandbox Code Playgroud)

我想知道找到materialID具有价值的元素的最短路径PLYWOOD.
我可以使用for循环来做到这一点.但我想知道这样的一些捷径

var unit = jsonArray[<whiere materialID == 'PLYWOOD']['Unit'];

jQuery如果需要,您可以使用.

javascript arrays jquery json

1
推荐指数
1
解决办法
8844
查看次数