ネストされた値を検索して、JSON応答からIPv4アドレスを取得するにはどうすればよいですか?

user5544183

私はRubyを初めて使用し、しばらくの間これに固執しています。以下に説明するようにJSON応答を受け取り、その部分文字列の値が私が指定したものである部分文字列を検索することを目指しています。

たとえば、次のような応答があります。

{
  "00:00:00:CC:00:CC": {
    "family": "lladdr"
  },
  "10.0.0.20": {
    "family": "inet",
    "prefixlen": "24",
    "netmask": "255.255.255.0",
    "broadcast": "10.0.0.255",
    "scope": "Global"
  },
  "ff00::f00:00ff:fff0:00f0": {
    "family": "inet6",
    "prefixlen": "64",
    "scope": "Link",
    "tags": []
  }
}

キーfamilyの値がinet。に等しい親の値を取得する必要がありますこの場合、10.0.0.20ファミリがinetに等しいときの出力として必要です

私はここで複数の質問をしました、そしてグーグルは助けませんでした。を使用してJSONを解析し、JSON.parse検索または選択を使用して回答を取得する必要があることを理解していますが、機能させることができませんでした。

grepまたはawkを使用してBashで行うように、これを実行できる他の方法があるかどうかはわかりません。1つのハックはfoo.[46..54]、IPを出力するようなものを使用することかもしれませんが、これもこれを解決するための悪い方法だと思います。

トッドA.ジェイコブス

Hash#invertを使用する

ハッシュがJSON#parseを使用して応答としてすでに保存されいると仮定すると、問題を解決する1つの方法は、Hash#invertメソッドを使用してハッシュを反転することです。例えば:

# Return an Array of IPv4, then pop the last/only String value.
response.invert.select { |h| h.values.include? 'inet' }.values.pop
#=> "10.0.0.20"

これはすばやく簡単で、提供されたデータで機能します。ただし、いくつかの小さな注意点があります。

警告

  1. 応答ハッシュにIPv4アドレスが1つしかないことを前提としています。inet値として複数のキーがある場合は、適切と思わpopれる結果の配列を使用および処理しないでください。例えば:

    response.invert.select { |h| h.values.include? 'inet' }.values
    #=> ["10.0.0.20"]
    
  2. 各トップレベルのJSONオブジェクトのキーはIPアドレスであると想定しています。私たちは実際には何も検証していません。

  3. お持ちのJSONで機能しますが、任意にネストされたデータ構造やさまざまなデータ構造を解決することはできません。さまざまな種類の入力がある場合は、「何らかの組み立てが必要」と考えてください。

  4. inet家族がいない場合は{}.values.popnilを返すことがあります。アプリケーションでそれを計画していることを確認してください。

これらはいずれも、特定のユースケースの目玉にはなりませんが、覚えておく価値は確かにあります。あなたのマイレージは異なる場合があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IPv4アドレスのみを取得するにはどうすればよいですか

分類Dev

ネストされたJSON応答から特定の値を取得するにはどうすればよいですか?

分類Dev

WebRTCを使用してユーザーのパブリックIPv4アドレスを取得するにはどうすればよいですか?

分類Dev

pojoクラスを介してレトロフィット応答からjson配列にネストされたjsonオブジェクトを取得するにはどうすればよいですか?

分類Dev

ネストされた配列から値を取得するにはどうすればよいですか?JSON

分類Dev

Node.jsで新しく検索されたホスト名のアドレスを取得するにはどうすればよいですか?

分類Dev

SwiftでIPv4およびIPv6アドレスを検証するにはどうすればよいですか?

分類Dev

jqueryを使用してネストされたJSONオブジェクトから値を取得するにはどうすればよいですか?

分類Dev

辞書を使用してPythonからネストされたJSON値を取得するにはどうすればよいですか?

分類Dev

grepを使用して、ipv4アドレスを含むファイルの名前のみを出力するにはどうすればよいですか?

分類Dev

Google画像検索からJSON応答を取得するにはどうすればよいですか?

分類Dev

JSONで値キーを検索してネストされたデータを返すにはどうすればよいですか?

分類Dev

cmdを介してネットワーク内のコンピューターのIPV4アドレスを取得するにはどうすればよいですか?

分類Dev

tcpdump と sed を使用して IPv4 MAC アドレスを抽出するにはどうすればよいですか

分類Dev

ipv4アドレスを保存してクエリAPIに使用するにはどうすればよいですか?

分類Dev

16.04で安定したIPv6アドレスを取得するにはどうすればよいですか?

分類Dev

16.04で安定したIPv6アドレスを取得するにはどうすればよいですか?

分類Dev

IPv4アドレスを手動でIPv6アドレスに変換するにはどうすればよいですか?

分類Dev

IPV6アドレスをIPV4アドレスに変換するにはどうすればよいですか?

分類Dev

シェルを使用してMACアドレスからIPv6アドレスを取得するにはどうすればよいですか?

分類Dev

ajax応答でphpを使用してエンコードされたjsonの値を取得するにはどうすればよいですか?

分類Dev

PHPコードを使用してIPv4アドレスとIPv6アドレスの両方を取得するにはどうすればよいですか?

分類Dev

応答コードで307を取得した場合にURLをスクレイプリトライさせるにはどうすればよいですか?

分類Dev

ISPを介した動的割り当てに使用されるIPv4アドレスはいくつですか?

分類Dev

選択ボックスから値を取得し、それを使用してAPIから応答を取得するにはどうすればよいですか?

分類Dev

キーのリストを指定してネストされた辞書から値を取得するにはどうすればよいですか?

分類Dev

C#でネストされたJSON値を取得するにはどうすればよいですか?

分類Dev

AngularJSテンプレートのネストされたJSON配列から値を取得するにはどうすればよいですか?

分類Dev

Googleスプレッドシートセル値を取得して別のタブで検索し、一致するものが見つかったら、すべての行を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    IPv4アドレスのみを取得するにはどうすればよいですか

  2. 2

    ネストされたJSON応答から特定の値を取得するにはどうすればよいですか?

  3. 3

    WebRTCを使用してユーザーのパブリックIPv4アドレスを取得するにはどうすればよいですか?

  4. 4

    pojoクラスを介してレトロフィット応答からjson配列にネストされたjsonオブジェクトを取得するにはどうすればよいですか?

  5. 5

    ネストされた配列から値を取得するにはどうすればよいですか?JSON

  6. 6

    Node.jsで新しく検索されたホスト名のアドレスを取得するにはどうすればよいですか?

  7. 7

    SwiftでIPv4およびIPv6アドレスを検証するにはどうすればよいですか?

  8. 8

    jqueryを使用してネストされたJSONオブジェクトから値を取得するにはどうすればよいですか?

  9. 9

    辞書を使用してPythonからネストされたJSON値を取得するにはどうすればよいですか?

  10. 10

    grepを使用して、ipv4アドレスを含むファイルの名前のみを出力するにはどうすればよいですか?

  11. 11

    Google画像検索からJSON応答を取得するにはどうすればよいですか?

  12. 12

    JSONで値キーを検索してネストされたデータを返すにはどうすればよいですか?

  13. 13

    cmdを介してネットワーク内のコンピューターのIPV4アドレスを取得するにはどうすればよいですか?

  14. 14

    tcpdump と sed を使用して IPv4 MAC アドレスを抽出するにはどうすればよいですか

  15. 15

    ipv4アドレスを保存してクエリAPIに使用するにはどうすればよいですか?

  16. 16

    16.04で安定したIPv6アドレスを取得するにはどうすればよいですか?

  17. 17

    16.04で安定したIPv6アドレスを取得するにはどうすればよいですか?

  18. 18

    IPv4アドレスを手動でIPv6アドレスに変換するにはどうすればよいですか?

  19. 19

    IPV6アドレスをIPV4アドレスに変換するにはどうすればよいですか?

  20. 20

    シェルを使用してMACアドレスからIPv6アドレスを取得するにはどうすればよいですか?

  21. 21

    ajax応答でphpを使用してエンコードされたjsonの値を取得するにはどうすればよいですか?

  22. 22

    PHPコードを使用してIPv4アドレスとIPv6アドレスの両方を取得するにはどうすればよいですか?

  23. 23

    応答コードで307を取得した場合にURLをスクレイプリトライさせるにはどうすればよいですか?

  24. 24

    ISPを介した動的割り当てに使用されるIPv4アドレスはいくつですか?

  25. 25

    選択ボックスから値を取得し、それを使用してAPIから応答を取得するにはどうすればよいですか?

  26. 26

    キーのリストを指定してネストされた辞書から値を取得するにはどうすればよいですか?

  27. 27

    C#でネストされたJSON値を取得するにはどうすればよいですか?

  28. 28

    AngularJSテンプレートのネストされたJSON配列から値を取得するにはどうすればよいですか?

  29. 29

    Googleスプレッドシートセル値を取得して別のタブで検索し、一致するものが見つかったら、すべての行を取得するにはどうすればよいですか?

ホットタグ

アーカイブ