如何使用python获取JSON的二级密钥?

时间:2018-02-14 15:51:49

标签: python json parsing

下面是JSON文件的内容,我怎么才能得到第二级的密钥,这意味着我应该能够存储像uid,passid,signbuttonid,logoIcon,cornerSettingMenu,logoutButtonId,overlayId,loaderInFunctionalPanel这样的密钥。我应该能够使用python存储在列表或某个数组中。意味着我需要像

list[0]=  uid

list[1]=passid

list[2]=  signbuttonid

list[3]=logoIcon and so on . . . . . . 
  

{         “GlobalElements”:   [                 {                  “UID”: “USEREMAIL”                  “passid”: “userPwd”                  “signbuttonid”:“//按钮[@ class ='btn btn-mammoth']”,                  “logoIcon”:“// a [@ class ='logo text-hide']”,                  “cornerSettingMenu”: “// DIV [@类= '下拉肘节'] / P”,                  “logoutButtonId”: “//一个[@类= '注销']”,                  “overlayId”: “// DIV [@类= '覆盖']”,                  “loaderInFunctionalPanel”:“// DIV [@类= '小直列装载机'] /子:: I [@类='发   fa-spinner fa-pulse']“                } ]

注意:我不需要那些值。我只需要钥匙。

任何人都可以帮我这个。提前致谢。

3 个答案:

答案 0 :(得分:1)

如果

import json

a={ "GlobalElements" :[ { "uid":"userEmail", "passid":"userPwd", "signbuttonid": "//button[@class='btn btn-mammoth']", "logoIcon":"//a[@class='logo text-hide']", "cornerSettingMenu":"//div[@class='dropdown-toggle']/p", "logoutButtonId":"//a[@class='logout']", "overlayId":"//div[@class='overlay']", "loaderInFunctionalPanel":"//div[@class='small-inline-loader']/child::i[@class='fa fa-spinner fa-pulse']" } ]}

a= json.dumps(a) #serialize dictionary to json

b=json.loads(a)  #unserialize json to get dictionary

获取密钥列表:

l= b["GlobalElements"][0].keys()
print l
  

[u' uid',u' logoutButtonId',u' logoIcon',u' signbuttonid',u' passid',u& #39; overlayId',u' loaderInFunctionalPanel',u' cornerSettingMenu']

答案 1 :(得分:0)

Building in workspace /Users/Shared/Jenkins/Home/workspace/Test
Parsing POMs
Established TCP socket on 52863
[TestForm] $ /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/bin/java –Xmx512m –XX:MaxPermSize=128m -cp /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.12-alpha-1.jar:/Users/Shared/Jenkins/Home/tools/hudson.tasks.Maven_MavenInstallation/MavenTest/boot/plexus-classworlds-2.5.2.jar:/Users/Shared/Jenkins/Home/tools/hudson.tasks.Maven_MavenInstallation/MavenTest/conf/logging jenkins.maven3.agent.Maven35Main /Users/Shared/Jenkins/Home/tools/hudson.tasks.Maven_MavenInstallation/MavenTest /Users/Shared/Jenkins/Home/war/WEB-INF/lib/remoting-3.14.jar /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.12-alpha-1.jar /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.12-alpha-1.jar 52863
Error: Could not find or load main class –Xmx512m
ERROR: Failed to parse POMs
java.nio.file.NoSuchFileException: /Users/Shared/Jenkins/Home/workspace/Test/Users/xyz/eclipse-workspace/TestForm/pom.xml
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
    at java.nio.file.Files.newByteChannel(Files.java:361)
    at java.nio.file.Files.newByteChannel(Files.java:407)
    at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
    at java.nio.file.Files.newInputStream(Files.java:152)
    at hudson.FilePath.read(FilePath.java:1770)
    at jenkins.plugins.maveninfo.extractor.properties.PomPropertiesFinder.findProperties(PomPropertiesFinder.java:50)
    at jenkins.plugins.maveninfo.extractor.MavenInfoExtractor.extract(MavenInfoExtractor.java:58)
    at jenkins.plugins.maveninfo.extractor.MavenInfoEnvironment.tearDown(MavenInfoEnvironment.java:42)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:908)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
    at hudson.model.Run.execute(Run.java:1724)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:421)
TestNG Reports Processing: START
Looking for TestNG results report in workspace using pattern: /Users/xyz/eclipse-workspace/TestForm/test-output/testng-results.xml 
Did not find any matching files.
Finished: FAILURE

谢谢。

答案 2 :(得分:0)

首先你需要导入json 将您的json内容存储在变量中。如果它在文件中,请读取文件并将其存储在变量中。 使用dumps()和loads()方法来序列化和反序列化,并将值取为如下代码

import json

x={ "GlobalElements" :[ { "uid":"userEmail", "passid":"userPwd", "signbuttonid": "//button[@class='some id']", "logoIcon":"//a[@class='some id']", "cornerSettingMenu":"//div[@class='dropdown-toggle']/p", "logoutButtonId":"//a[@class='logout']", "overlayId":"//div[@class='overlay']", "loaderInFunctionalPanel":"//div[@class='small-inline-loader']/child::i[@class='fa fa-spinner fa-pulse']" }  ] }

x= json.dumps(x)

y=json.loads(y)
z= b["GlobalElements"][0].keys()

此处z将保留第二级的第一个值。