I am sure there is some Java JSON library that you can use for this, but I have never done this, so I am afraid I cannot help on this account.
My suggestion for capturing the complete JSON message in a string was only because you asked if it was possible - and as a way to verify that you actually receive the JSON message in openHAB, i.e. a debugging measure.
This is not neccessarily the way I would do this.
Given the following JSON message (from your original post):
{"type":"access","time":1542734830,"isKnown":"true","access":"Always","username":"schwarz","uid":"12361353"}
I would suggest to try to map this directly to separate items using JSONPATH (as proposed by @psyciknz above) like this:
String rfid1_type { mqtt="<[mosquitto:esprfid:state:JSONPATH($.type)]" }
DateTime rfid1_time { mqtt="<[mosquitto:esprfid:state:JSONPATH($.time)]" }
String rfid1_isknown { mqtt="<[mosquitto:esprfid:state:JSONPATH($.isKnown)]" }
String rfid1_access { mqtt="<[mosquitto:esprfid:state:JSONPATH($.access)]" }
String rfid1_username { mqtt="<[mosquitto:esprfid:state:JSONPATH($.username)]" }
Number rfid1_uid { mqtt="<[mosquitto:esprfid:state:JSONPATH($.uid)]" }
This really should work (with the disclaimer that I may have made a typo in the above). If not let’s try to find out why…