0

I have a json body as below -

    {
  "type": "SourceUnit",
  "children": [
    {
      "type": "PragmaDirective",
      "name": "solidity",
      "value": ">=0.4.22 <0.9.0"
    },
    {
      "type": "ContractDefinition",
      "name": "txorigin",
      "baseContracts": [],
      "subNodes": [],
      "kind": "contract"
    }
  ],
  "tokens": [
    {
      "type": "Keyword",
      "value": "pragma"
    },
    {
      "type": "Identifier",
      "value": "solidity"
    },
    {
      "type": "Punctuator",
      "value": ">="
    },
    {
      "type": "Version",
      "value": "0.4.22"
    },
    {
      "type": "Punctuator",
      "value": "<"
    },
    {
      "type": "Version",
      "value": "0.9.0"
    },
    {
      "type": "Punctuator",
      "value": ";"
    },
    {
      "type": "Keyword",
      "value": "contract"
    },
    {
      "type": "Identifier",
      "value": "txorigin"
    },
    {
      "type": "Punctuator",
      "value": "{"
    },
    {
      "type": "type",
      "value": "address"
    },
    {
      "type": "Identifier",
      "value": "owner"
    },
    {
      "type": "Punctuator",
      "value": ";"
    },
    {
      "type": "Keyword",
      "value": "constructor"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Keyword",
      "value": "public"
    },
    {
      "type": "Punctuator",
      "value": "{"
    },
    {
      "type": "Identifier",
      "value": "owner"
    },
    {
      "type": "Punctuator",
      "value": "="
    },
    {
      "type": "Identifier",
      "value": "msg"
    },
    {
      "type": "Punctuator",
      "value": "."
    },
    {
      "type": "Identifier",
      "value": "sender"
    },
    {
      "type": "Punctuator",
      "value": ";"
    },
    {
      "type": "Punctuator",
      "value": "}"
    },
    {
      "type": "Keyword",
      "value": "function"
    },
    {
      "type": "Identifier",
      "value": "sendTo"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "type",
      "value": "address"
    },
    {
      "type": "Identifier",
      "value": "receiver"
    },
    {
      "type": "Punctuator",
      "value": ","
    },
    {
      "type": "type",
      "value": "uint"
    },
    {
      "type": "Identifier",
      "value": "amount"
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Keyword",
      "value": "public"
    },
    {
      "type": "Punctuator",
      "value": "{"
    },
    {
      "type": "Identifier",
      "value": "require"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "Identifier",
      "value": "tx"
    },
    {
      "type": "Punctuator",
      "value": "."
    },
    {
      "type": "Identifier",
      "value": "origin"
    },
    {
      "type": "Punctuator",
      "value": "=="
    },
    {
      "type": "Identifier",
      "value": "owner"
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Punctuator",
      "value": ";"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "type",
      "value": "bool"
    },
    {
      "type": "Identifier",
      "value": "success"
    },
    {
      "type": "Punctuator",
      "value": ","
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Punctuator",
      "value": "="
    },
    {
      "type": "Identifier",
      "value": "receiver"
    },
    {
      "type": "Punctuator",
      "value": "."
    },
    {
      "type": "Identifier",
      "value": "call"
    },
    {
      "type": "Punctuator",
      "value": "."
    },
    {
      "type": "Identifier",
      "value": "value"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "Identifier",
      "value": "amount"
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "Keyword",
      "value": ""
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Punctuator",
      "value": ";"
    },
    {
      "type": "Identifier",
      "value": "require"
    },
    {
      "type": "Punctuator",
      "value": "("
    },
    {
      "type": "Identifier",
      "value": "success"
    },
    {
      "type": "Punctuator",
      "value": ")"
    },
    {
      "type": "Punctuator",
      "value": ";"
    },
    {
      "type": "Punctuator",
      "value": "}"
    },
    {
      "type": "Punctuator",
      "value": "}"
    },
    {
      "type": "Keyword",
      "value": "<EOF>"
    }
  ]
}

whenever any code executes, I want to check that the above "tx", ".", "origin" values are available in my generated json or not. and, it should be consecutive like (tx.origin). if it is available it will return something. I am available to get any one value - .tokens[?(@.value == "tx")].value I need to check all 3 in a consecutive manner.

Could you guys help me? Thanks in advance.

  • I would suggest using JSON Schema for validation. Then, if the data validates, you can just access the values directly since you know where they are. – gregsdennis Oct 03 '21 at 00:56
  • @gregsdennis , that's the problem, i don't know where are values, i mean i can'give index in my json path. there are other fields too which can change location/index of above mentions values – Rushikesh Khamkar Oct 03 '21 at 16:09

1 Answers1

0

Another option is to just get the values

$.tokens[*].value

This will get you all the values. They should be in the right sequence, but there's no guarantee.

gregsdennis
  • 7,218
  • 3
  • 38
  • 71