Yes, that will still work. You will want to field map into a new GeoEvent definition that has all the new fields you want to extract out of the string (id - int, timestamp - date, device_id - String, data - String).
Then use a Field Calculator for each field you want to extract from the string, the expression is replaceAll(jsonStringField, '.*"rssi":(\d+),.*', '$1') (where rssi is replaced by the name of the value you are trying to get out) and putting the result into the respective existing field.
id = replaceAll(jsonStringField, '.*"id":(\d+),.*', '$1')
timestamp = replaceAll(jsonStringField, '.*"timestamp":(\d+),.*', '$1')
device_id = replaceAll(jsonStringField, '.*"device_id":"(\w+)",.*', '$1')
data = replaceAll(jsonStringField, '.*"data":"(\w+)",.*', '$1')