在jmeter

时间:2017-04-10 06:15:43

标签: json jmeter

我需要从下面的响应中提取第一组值,

{
:   "result":
:   [
:   :   {
:   :   :   "TaxcomputationId":"08f6ad40-cc1a-e711-80c3-000d3ae017ab",
:   :   :   "EmployeeId":"eb8455e9-c71a-e711-80c3-000d3ae017ab",
:   :   :   "PlanId":"d6f5ad40-cc1a-e711-80c3-000d3ae017ab",
:   :   :   "AmendmentIndicator":"O",
:   :   :   "RPEmpId":"103622",
:   :   :   "Surname":"Galvin",
:   :   :   "FirstName":"Benjamin",
:   :   :   "TFN":"433260373",
:   :   :   "TerminationDate":"16/09/2026",
:   :   :   "HomeCountry":null,
:   :   :   "HostCountry":null,
:   :   :   "StartDateOverseasEmployment":null,
:   :   :   "EndDateOverseasEmployment":null,
:   :   :   "Assignments":
:   :   :   [
:   :   :   :   "06/12/2006",
:   :   :   :   "07/10/2010",
:   :   :   :   "United States",
:   :   :   :   "Australia"
:   :   :   ],
:   :   :   "InboundAssigneeIsNotTemporaryResident":"",
:   :   :   "TaxResidencyDuringAssignment":"",
:   :   :   "DateOfExpiry":"24/01/2025",
:   :   :   "TaxResidencyAtTP":"",
:   :   :   "ApportionedBasedOnTaxLogic":"n/a",
:   :   :   "ActualPlanId":"1411386-1350",
:   :   :   "DOG":"\/Date(1423094400000)\/",
:   :   :   "DOV":"\/Date(1444867200000)\/",
:   :   :   "DateOfGrant":"05/02/2015",
:   :   :   "DateOfVest":"15/10/2015",
:   :   :   "DateOfExercise":"22/01/2023",
:   :   :   "DateOfSale":"31/05/2021",
:   :   :   "TaxLogic":"Deferred Shares/Performance Rights",
:   :   :   "TaxingPoint":"Vest",
:   :   :   "TaxingDate":"15/10/2015",
:   :   :   "NoOfESSInterests":52,
:   :   :   "FMVAtTPAUD":"",
:   :   :   "ExercisePriceAUD":"",
:   :   :   "NoOfSharesWithheldForHypo":null,
:   :   :   "ApportionGrossIncome":"Yes",
:   :   :   "Comments":null,
:   :   :   "IncomeNetHypoAUD":"",
:   :   :   "AustralianSourcedIncome":"",
:   :   :   "ForeignSourcedIncome":"",
:   :   :   "ReportableAmount":"",
:   :   :   "PercentageOfESSIncomeTaxableInAU":"",
:   :   :   "IsCalculated":false,
:   :   :   "IsLocked":false,
:   :   :   "SubmissionStatus":"Draft",
:   :   :   "IsError":1,
:   :   :   "ErrorCells":
:   :   :   [
:   :   :   :   23
:   :   :   ]
:   :   },
:   :   {
:   :   :   "TaxcomputationId":"09f6ad40-cc1a-e711-80c3-000d3ae017ab",
:   :   :   "EmployeeId":"ec8455e9-c71a-e711-80c3-000d3ae017ab",
:   :   :   "PlanId":"d7f5ad40-cc1a-e711-80c3-000d3ae017ab",
:   :   :   "AmendmentIndicator":"O",
:   :   :   "RPEmpId":"103623",
:   :   :   "Surname":"Galvin",
:   :   :   "FirstName":"Benjamin",
:   :   :   "TFN":"433260374",
:   :   :   "TerminationDate":"17/09/2026",
:   :   :   "HomeCountry":null,
:   :   :   "HostCountry":null,
:   :   :   "StartDateOverseasEmployment":null,
:   :   :   "EndDateOverseasEmployment":null,
:   :   :   "Assignments":
:   :   :   [
:   :   :   :   "04/03/2009",
:   :   :   :   "08/03/2013",
:   :   :   :   "United States",
:   :   :   :   "Kuwait"
:   :   :   ],
:   :   :   "InboundAssigneeIsNotTemporaryResident":"",
:   :   :   "TaxResidencyDuringAssignment":"",
:   :   :   "DateOfExpiry":"25/01/2025",
:   :   :   "TaxResidencyAtTP":"",
:   :   :   "ApportionedBasedOnTaxLogic":"n/a",
:   :   :   "ActualPlanId":"1411386-1351",
:   :   :   "DOG":"\/Date(1431388800000)\/",
:   :   :   "DOV":"\/Date(1447545600000)\/",
:   :   :   "DateOfGrant":"12/05/2015",
:   :   :   "DateOfVest":"15/11/2015",
:   :   :   "DateOfExercise":"23/01/2023",
:   :   :   "DateOfSale":"01/06/2021",
:   :   :   "TaxLogic":"Deferred Shares/Performance Rights",
:   :   :   "TaxingPoint":"Vest",
:   :   :   "TaxingDate":"15/11/2015",
:   :   :   "NoOfESSInterests":31,
:   :   :   "FMVAtTPAUD":"",
:   :   :   "ExercisePriceAUD":"",
:   :   :   "NoOfSharesWithheldForHypo":null,
:   :   :   "ApportionGrossIncome":"Yes",
:   :   :   "Comments":null,
:   :   :   "IncomeNetHypoAUD":"",
:   :   :   "AustralianSourcedIncome":"",
:   :   :   "ForeignSourcedIncome":"",
:   :   :   "ReportableAmount":"",
:   :   :   "PercentageOfESSIncomeTaxableInAU":"",
:   :   :   "IsCalculated":false,
:   :   :   "IsLocked":false,
:   :   :   "SubmissionStatus":"Draft",
:   :   :   "IsError":1,
:   :   :   "ErrorCells":
:   :   :   [
:   :   :   :   23
:   :   :   ]
:   :   }
:   ]
}

我使用了$.result[0]的JSON路径提取器。从使用此代码,我可以提取第一组值,但它返回响应如下,

{
:   TaxcomputationId=929e1214-cc1a-e711-80c3-000d3ae017ab, 
:   EmployeeId=6524734a-c81a-e711-80c3-000d3ae017ab, 
:   PlanId=609e1214-cc1a-e711-80c3-000d3ae017ab, 
:   AmendmentIndicator=O, 
:   RPEmpId=103622, 
:   Surname=Galvin, 
:   FirstName=Benjaminn, 
:   TFN=433260373, 
:   TerminationDate=16/09/2026, 
:   HomeCountry=null, 
:   HostCountry=null, 
:   StartDateOverseasEmployment=null, 
:   EndDateOverseasEmployment=null, 
:   Assignments=
:   [
:   :   "06\/12\/2006",
:   :   "07\/10\/2010",
:   :   "United States",
:   :   "Australia"
:   ],
:    InboundAssigneeIsNotTemporaryResident=No, 
:   TaxResidencyDuringAssignment=n/a, 
:   DateOfExpiry=24/01/2025, 
:   TaxResidencyAtTP=Non-resident, 
:   ApportionedBasedOnTaxLogic=Yes, 
:   ActualPlanId=1411386-1350, 
:   DOG=/Date(1423094400000)/, 
:   DOV=/Date(1444867200000)/, 
:   DateOfGrant=05/02/2015, 
:   DateOfVest=15/10/2015, 
:   DateOfExercise=22/01/2023, 
:   DateOfSale=31/05/2021, 
:   TaxLogic=Deferred Shares/Performance Rights, 
:   TaxingPoint=Vest, 
:   TaxingDate=15/10/2015, 
:   NoOfESSInterests=52, 
:   FMVAtTPAUD=24.04, 
:   ExercisePriceAUD=0.00, 
:   NoOfSharesWithheldForHypo=1960, 
:   ApportionGrossIncome=Yes, 
:   Comments=, 
:   IncomeNetHypoAUD=-45861.80, 
:   AustralianSourcedIncome=0.00, 
:   ForeignSourcedIncome=-45861.80, 
:   ReportableAmount=0.00, 
:   PercentageOfESSIncomeTaxableInAU=0.00, 
:   IsCalculated=true, 
:   IsLocked=false, 
:   SubmissionStatus=Draft, 
:   IsError=1, 
:   ErrorCells=
:   [
:   :   30,
:   :   32
:   ]
}

您可以发现缺少双引号。但我需要用双引号提取。任何人都可以给我解决方案。

1 个答案:

答案 0 :(得分:0)

听起来像是JSON Path Extractor插件中的错误,我建议通过JMeter Plugins support forum报告

与此同时,还有以下解决方法:

  1. 使用自JMeter 3.0以来可用的JSON Extractor
  2. 如果您无法升级到JMeter 3.0,可以使用JSR223 PostProcessorGroovy language和以下代码:

    def json = new groovy.json.JsonSlurper().parse(prev.getResponseData())
    def firstResult = new groovy.json.JsonBuilder(json.result.get(0)).toPrettyString()
    vars.put("result", firstResult);