mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-08-31 16:07:30 +02:00
Feature: Support for JsonPath in the response (with HandleBars) #118
Closed
opened 2025-12-29 14:22:54 +01:00 by adam
·
19 comments
No Branch/Tag Specified
master
1341-mapping-json
stef-aspire-tests-updates
bug/973-TinyMapper
bug/1149-AppendGuidToSavedMappingFile
feature/1150-DockerImageVersion
61
stef-1108
stef-1097
stef-1083-MessageOptions_Type_Conflict
stef-1062-logger
stef-IgnoreOpenApiErrors
stef-928-TypeLoadException-FluentAssertions-net472
nunit
stef-849
stef-847-regex-questionmark
http_verb
WireMockServerContext
webapp
ai
CommandLineArgumentsParser
2.15.0
2.14.0
2.13.0
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.25.0
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.2
1.11.0
1.10.1
1.10.0
1.9.1
1.9.0
1.8.18
1.8.17
1.8.16
1.8.15
1.8.14
1.8.13
1.8.12
1.8.11
1.8.10
1.8.9
1.8.8
1.8.7
1.8.6
1.8.5
1.8.3
1.8.2
1.8.1
1.8.0
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.62
1.5.61
1.5.60
1.5.59
1.5.58
1.5.57
1.5.56
1.5.55
1.5.54
1.5.53
1.5.52
1.5.51
1.5.50
1.5.49
1.5.48
1.5.47
1.5.46
1.5.45
1.5.44
1.5.43
1.5.42
1.5.41
1.5.40
1.5.39
1.5.38
1.5.37
1.5.36
1.5.35
1.5.34
1.5.33
1.5.32
1.5.31
1.5.30
1.5.29
1.5.28
1.5.27
1.5.26
1.5.25
1.5.24
1.5.23
1.5.22
1.5.21
1.5.20
1.5.19
1.5.18
1.5.17
1.5.16
1.5.15
1.5.14
1.5.13
1.5.12
1.5.11
1.5.10
1.5.9
1.5.8
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.43
1.4.42
1.4.41
1.4.40
1.4.39
1.4.38
1.4.37
1.4.36
1.4.35
1.4.34
1.4.33
1.4.32
1.4.31
1.4.30
1.4.29
1.4.28
1.4.27
1.4.26
1.4.25
1.4.24
1.4.23
1.4.22
1.4.21
1.4.20
1.4.19
1.4.18
1.4.17
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.10
1.3.9
1.3.8
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.18
1.2.17
1.2.16
1.2.15
1.2.14
1.2.13
1.2.12
1.2.11.0
1.2.10
1.2.9.0
1.2.8.0
1.2.7.0
1.2.6.0
1.2.5.0
1.2.4.0
1.2.3.0
1.2.2.0
1.2.1.0
1.2.0.0
1.1.10
1.1.9.0
1.1.8.0
1.1.7.0
1.1.6.0
1.1.5.0
1.1.3.0
1.1.2.0
1.1.1.0
1.1.0.0
1.0.43.0
1.0.42.0
1.0.41.0
1.0.40.0
1.0.39.0
1.0.38.0
1.0.37.0
1.0.36.0
1.0.35.0
1.0.34.0
1.0.33.0
1.0.32.0
1.0.31.0
1.0.29.0
1.0.28.0
1.0.25.0
1.0.24.0
1.0.23.0
1.0.22.0
1.0.21.0
1.0.20.0
1.0.19.0
1.0.18.0
1.0.17.0
1.0.16.0
1.0.15.0
1.0.14.0
1.0.13.0
1.0.12.0
1.0.11.0
1.0.10.0
1.0.9.0
1.0.8.0
1.0.7.0
1.0.6.1
1.0.6
1.0.5
1.0.4.21
1.0.4.20
1.0.4.19
1.0.4.18
1.0.4.17
1.0.4.16
1.0.4.15
1.0.4.14
1.0.4.13
1.0.4.12
1.0.4.11
1.0.4.10
1.0.4.9
1.0.4.8
1.0.4.7
1.0.4.6
1.0.4.5
1.0.4.4
1.0.4.3
1.0.4.2
1.0.4.1
1.0.4.0
1.0.3.20
1.0.3.19
1.0.3.18
1.0.3.17
1.0.3.16
1.0.3.15
1.0.3.14
1.0.3.13
1.0.3.12
1.0.3.11
1.0.3.10
1.0.3.9
1.0.3.8
1.0.3.7
1.0.3.6
1.0.3.5
1.0.3.4
1.0.3.3
1.0.3.2
1.0.3.1
1.0.3.0
1.0.2.13
1.0.2.12
1.0.2.11
1.0.2.10
1.0.2.9
1.0.2.8
1.0.2.7
1.0.2.6
1.0.2.5
1.0.2.4
1.0.2.1
1.0.2.0
1.0.1.5
1.0.1.3
1.0.1.2
1.0.1.1
1.0.0.0
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/WireMock.Net-wiremock#118
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @zubinix on GitHub (Jul 18, 2018).
Originally assigned to: @StefH on GitHub.
Does WireMock.Net have support for the jsonPath helper found in the java based WireMock? I want to create a template that inserts in the response items from a JSON request. It seems all I can do with WireMock-Net 'out of the box' is use {{request.body}} in the response template which returns the entire JSON body of the request?
@StefH commented on GitHub (Jul 18, 2018):
Currently it's only supported that you can use a jsonmatcher on the request. See https://github.com/WireMock-Net/WireMock.Net/wiki/Stubbing-and-Request-Matching#json-jsonmatcher
It's not yet supported that you can use JsonPath in the output, like you can do with handlebars : https://github.com/WireMock-Net/WireMock.Net/wiki/Stubbing-and-Request-Matching#response-templating
@zubinix commented on GitHub (Jul 18, 2018):
Is there a plan to do so? Is there a HandleBar feature I can use instead to extract parts from the request body?
@StefH commented on GitHub (Jul 18, 2018):
There is no HandleBars functionality out of the box. I can extend the code to support something like this:
Where response.body is the response body in json.
And the $.Manufacturers[?(@.Name == 'Acme Co')] is the JSONPath expression (copied from example here: https://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenJsonPath.htm)
Also selecting multiple tokens should be possible:
@zubinix commented on GitHub (Jul 19, 2018):
That sounds great. When do you think you can add this feature?
@StefH commented on GitHub (Jul 19, 2018):
Currently I am fixing this issue https://github.com/WireMock-Net/WireMock.Net/issues/148#issuecomment-406163503.
After that I will continue on this one.
If the proposed fix here is enough for you and will comply to all your requirements, I will implement it as is.
@StefH commented on GitHub (Jul 19, 2018):
Preview NuGet can be found at
https://www.nuget.org/packages/WireMock.Net/1.0.4.7-preview-jsonpath
Note that the syntax has been changed from
JSONPath.SelectTokentoJsonPath.SelectToken!@zubinix commented on GitHub (Jul 20, 2018):
Thanks StefH. I will take a look and get back to you.
@zubinix commented on GitHub (Jul 20, 2018):
My request input I'm trying to match is
{"username": "Zubin"}using
but I get
What am I doing wrong?
@StefH commented on GitHub (Jul 20, 2018):
1] You want to use the request I guess
2] Also try request.bodyAsJson instead of request.body?
So:
{{JsonPath.SelectToken request.bodyAsJson \"@.username\"}}See also this code : https://github.com/WireMock-Net/WireMock.Net/blob/SupportJSONPath_in_the_response/test/WireMock.Net.Tests/ResponseBuilderTests/ResponseWithHandlebarsTests.cs#L384
@zubinix commented on GitHub (Jul 20, 2018):
Yep should have used request.body but still getting
The input request I'm trying to grab data from is very simple just:
I'm just trying to make "Zubin" appear the response.
@StefH commented on GitHub (Jul 20, 2018):
You should use username instead of @.username.
And the BodyAsJson does not (yet) work, so you need to use this solution:
Note that you also can use request.bodyAsJson.
@zubinix commented on GitHub (Jul 20, 2018):
That did the trick. Thanks.
@StefH commented on GitHub (Jul 20, 2018):
I did update the code, so now also BodyAsJson (in the response) is supported, see this mapping:
New Nuget (1.0.4.8-preview-01) is available.
Please test
@zubinix commented on GitHub (Jul 23, 2018):
Trying the above. What could be causing this error?
For input
@StefH commented on GitHub (Jul 23, 2018):
When you send a request, do you also provide the
Content-Typeheader with valueapplication/json?Like:

@zubinix commented on GitHub (Jul 23, 2018):
Oh yes, I was missing the header in the request. Works now but interesting if I delete the header it still works! So the header is required the first time only? I'm using fiddler and postman as follows:
@StefH commented on GitHub (Jul 23, 2018):
Very strange. There is no caching on the request, that would break the whole WireMock functionality. For now, do you think it works as excepted ? If so, this issue can be closed, and then I'll create a new official NuGet.
@zubinix commented on GitHub (Jul 23, 2018):
Yes. Please close and create the NuGet. Thanks! I might create another issue relating to this apparent caching after get some more experience this tool.
@zubinix commented on GitHub (Jul 23, 2018):
Support for Json request parameters in response has been added.