java - 从 ruby​​ 检索 Java 列表

标签 java ruby list

我的服务(用 Java 编写)返回以下格式的输出:

 "serviceMetricList": 
  [
    {"MetricDataList": 
      {"metricDataList": 
        [
          {"metricDate": "2011-04-05T14:50:00.000Z", 
           "metricValue": "427448.0"}, 
          {"metricDate": "2011-04-12T14:30:00.000Z", 
           "metricValue": "430089.0"}
        ]
      }, 
     "urlSerialNo": "1"}
     }
  ]

我需要从 Ruby 客户端检索值 metricDate 和 metricValue。我不确定如何做到这一点。在这方面的任何帮助都会很大。

最佳答案

如果要解析这种数据格式,首先要知道它是什么数据格式。它似乎不是任何众所周知的数据格式,也不是我所知道的任何格式。显然它不是 JSON,也不是 YAML,更不是 XML。

所以,您可能必须编写自己的解析器。或者将数据转换为更知名的格式的预处理器,为此解析器已经存在。

例如,如果您要将示例转换为 YAML,它将如下所示:

"serviceMetricList": 
  [
    {"MetricDataList": 
      {"metricDataList": 
        [
          {"metricDate": "2011-04-05T14:50:00.000Z", 
           "metricValue": "427448.0"}, 
          {"metricDate": "2011-04-12T14:30:00.000Z", 
           "metricValue": "430089.0"}
        ]
      }, 
     "urlSerialNo": "1"
    }
  ]

你可以这样解析它:

require 'yaml'
h = YAML.load(your_java_data)

Date.parse(h['serviceMetricList'][0]['MetricDataList']['metricDataList'][0]['metricDate'])
# => #<Date: 2011-04-05 (4911313/2,0,2299161)>

Float(h['serviceMetricList'][0]['MetricDataList']['metricDataList'][0]['metricValue'])
# => 427448.0

# or maybe, if you don't like to lose precision:
require 'bigdecimal'

BigDecimal(h['serviceMetricList'][0]['MetricDataList']['metricDataList'][0]['metricValue'])
# => #<BigDecimal:eb8240,'0.427448E6',8(12)>

关于java - 从 ruby​​ 检索 Java 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637410/

相关文章:

java - 列表和链表

java - 那里有哪些 Java 外部包/库?

ruby - Rspec 和 bundle exec

ruby-on-rails - Ruby - 访问查询响应的正确方法

java - 使用列表填充 JTable

Python:创建一个包含字典的列表

java - 是否可以使用 Java 在文件上设置自定义元数据?

java - Java中递归删除字符

java - 如何使用 Google Finance API 获取股票报价?

ruby - 在 PostgreSQL 中按指定列分组