如何在给定的json中访问json键和值

时间:2018-01-15 18:31:57

标签: javascript json node.js

我有一个巨大的json对象,我需要从node.js中的json中查找并访问该键。

JSON:

{ validationCode: 0,
  transactionEnvelope:
   { signature: <Buffer 30 45 02 21 00 94 15 9e e9 13 30 2a 2c 57 0f 8e fc d5 91 31 5b 7a df a1 ec f2 f2 a5 71 19 59 b8 7f 0e ff 33 f5 02 20 1d 20 b5 93 89 cf 9f f0 d4 97 35 ... >,
     payload:
      { header:
         { channel_header:
            { type: 'ENDORSER_TRANSACTION',
              version: 3,
              timestamp: 'Wed Jan 10 2018 21:25:10 GMT+0530 (India Standard Time)',
              channel_id: 'mychannel',
              tx_id: '827f8c7bce4b1f64e7380767be9400e367d5d192ae6713a7ca07c56ecfb6dff0',
              epoch: 0,
              extension: <Buffer 12 06 12 04 74 72 61 69> },
           signature_header:
            { creator:
               { Mspid: 'Org1MSP',
                 IdBytes: '-----BEGIN CERTIFICATE-----\nMIICGDCCAb+gAwIBAgIQFSxnLAGsu04zrFkAEwzn6zAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xNzA4MzEwOTE0MzJaFw0yNzA4MjkwOTE0MzJa\nMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw\nEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV1dfmKxsFKWo7o6DNBIaIVebCCPAM9C/\nsLBt4pJRre9pWE987DjXZoZ3glc4+DoPMtTmBRqbPVwYcUvpbYY8p6NNMEswDgYD\nVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgQjmqDc122u64\nugzacBhR0UUE0xqtGy3d26xqVzZeSXwwCgYIKoZIzj0EAwIDRwAwRAIgXMy26AEU\n/GUMPfCMs/nQjQME1ZxBHAYZtKEuRR361JsCIEg9BOZdIoioRivJC+ZUzvJUnkXu\no2HkWiuxLsibGxtE\n-----END CERTIFICATE-----\n' },
              nonce: <Buffer f9 21 fe ac 10 59 93 78 76 65 15 f8 d2 cb 9a c9 cd 57 0b b9 78 da 2a b5> } },
        data:
         { actions:
            [ { header:
                 { creator:
                    { Mspid: 'Org1MSP',
                      IdBytes: '-----BEGIN CERTIFICATE-----\nMIICGDCCAb+gAwIBAgIQFSxnLAGsu04zrFkAEwzn6zAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xNzA4MzEwOTE0MzJaFw0yNzA4MjkwOTE0MzJa\nMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw\nEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV1dfmKxsFKWo7o6DNBIaIVebCCPAM9C/\nsLBt4pJRre9pWE987DjXZoZ3glc4+DoPMtTmBRqbPVwYcUvpbYY8p6NNMEswDgYD\nVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgQjmqDc122u64\nugzacBhR0UUE0xqtGy3d26xqVzZeSXwwCgYIKoZIzj0EAwIDRwAwRAIgXMy26AEU\n/GUMPfCMs/nQjQME1ZxBHAYZtKEuRR361JsCIEg9BOZdIoioRivJC+ZUzvJUnkXu\no2HkWiuxLsibGxtE\n-----END CERTIFICATE-----\n' },
                   nonce: <Buffer f9 21 fe ac 10 59 93 78 76 65 15 f8 d2 cb 9a c9 cd 57 0b b9 78 da 2a b5> },
                payload:
                 { chaincode_proposal_payload: { input: <Buffer 0a 9e 01 08 01 12 06 12 04 74 72 61 69 1a 91 01 0a 16 50 72 65 66 65 72 65 6e 63 65 52 65 67 69 73 74 72 61 74 69 6f 6e 0a 77 7b 22 4d 6f 62 69 6c 65 ... > },
                   action:
                    { proposal_response_payload:
                       { proposal_hash: 'b0240ba97f5a8d26f61c38cd8d5b27cb8b53ed0049bd61ba9b286392328f8b44',
                         extension:
                          { results:
                             { data_model: 0,
                               ns_rwset:
                                [ { namespace: 'lscc',
                                    rwset:
                                     { reads:
                                        [ { key: 'abc001',
                                            version:
                                             { block_num: Long { low: 1, high: 0, unsigned: true },
                                               tx_num: Long { low: 0, high: 0, unsigned: true } } } ],
                                       range_queries_info: [],
                                       writes: [] } },
                                  { namespace: 'abc001',
                                    rwset:
                                     { reads:
                                        [ { key: '1234',
                                            version:
                                             { block_num: Long { low: 7, high: 0, unsigned: true },
                                               tx_num: Long { low: 0, high: 0, unsigned: true } } } ],
                                       range_queries_info: [],
                                       writes:
                                        [ { key: '1234',
                                            is_delete: false,
                                            value: '{"Codeno":"12345"}' } ] } } ] },
                            events:
                             { chaincode_id: '',
                               tx_id: '',
                               event_name: '',
                               payload: <Buffer > },
                            response: { status: 200, message: '', payload: '' } } },
                      endorsements:
                       [ { endorser:
                            { Mspid: 'Org1MSP',
                              IdBytes: '-----BEGIN -----\nMIICGjCCAcCgAwIBAgIRAPlwF/rUZUP9mqN4wSml4iswCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwODMxMDkxNDMyWhcNMjcwODI5MDkxNDMy\nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHihxW6ks3B2+5XdbAVq3CBgxRRRZ22x\nzzpqnD86nKkz7fBElBuhlXl2K6rTxyY2OBOB0ts8keqZ93xueRGymrajTTBLMA4G\nA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEI5qg3Ndtru\nuLoM2nAYUdFFBNMarRst3dusalc2Xkl8MAoGCCqGSM49BAMCA0gAMEUCIQD4j0Rn\ne1rrd0FSCzsR6u+IuuPK5dI/kR/bh7+VLf0TNgIgCfUtkJvfvzVEwZLFoFyjoHtr\ntvwzNUS1U0hEqIaDeo4=\n-----END -----\n' },
                           signature: <Buffer 30 44 02 20 1c 00 1f c6 3a 50 55 56 7e 8e d9 e9 27 5b 6b be b2 6f d1 ce 0f 6d a0 10 0a 91 dc 7d eb 17 ca 3a 02 20 1c 48 29 2c b8 54 76 47 43 2b a1 7b ... > } ] } } } ] } } } }

如何在命名空间下访问block_num low value:7:abc001

我还有其他领域,我试过并得到了:

var txnid = query_responses.transactionEnvelope.payload.header.channel_header.tx_id;
var version = query_responses.transactionEnvelope.payload.header.channel_header.version;
var timestamp = query_responses.transactionEnvelope.payload.header.channel_header.timestamp;
var type  = query_responses.transactionEnvelope.payload.header.channel_header.type;

当我使用相同的方法时,它不适用于blocknum。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这是一些复杂的json。我对寻找元素的建议是一次尝试一个级别。这通常是我的思维过程:

query_responses.transactionEnvelope;
// Good got object
query_responses.transactionEnvelope.payload
// Another object, still good
query_responses.transactionEnvelope.payload.data
// Wait, this is an array? How do I get the payload
query_responses.transactionEnvelope.payload.data.actions.payload
// Nope, payload doesn't work on actions, as it's not an object
query_responses.transactionEnvelope.payload.data.actions[0]
// Awesome, have an object again now, let's access payload:
query_responses.transactionEnvelope.payload.data.actions[0].payload

block_num应位于:

var blockNumber = query_responses.transactionEnvelope.payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].version.block_num;

如果您希望按ns_rwset的名称进行过滤,可以使用此功能:

var abcRwset = query_responses.transactionEnvelope.payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset
    .find(rwset => rwset.namespace === 'abc001');

var blockNumber = abcRwset.rwset.reads[0].version.block_num;