I've made the HTTP testing app so you can confirm what's coming to the web server:
However, it depends on how do you want to submit the json (as a string or data?).
(main)> sample_json = BW::JSON.generate({ name: 'marin' })
=> "{\"name\":\"marin\"}"
(main)> BW::HTTP.post('
http://bw.dev', payload: {json: sample_json}) {|r| p BW::JSON.parse r.body}
=> #<BubbleWrap::HTTP::Query:0xe275ba0 @method="POST" @delegator=#<Proc:0xe27d690> @payload={:json=>"{\"name\":\"marin\"}"} @files=nil @boundary="F1F893C1-7D4C-478F-9716-7E6C2C401E8C" @credentials={:username=>"", :password=>""} @timeout=30.0 @headers={"Content-Type"=>"multipart/form-data; boundary=F1F893C1-7D4C-478F-9716-7E6C2C401E8C"} @cache_policy=0 @options={} @response=#<BubbleWrap::HTTP::Response:0xe275a80> @url=#<NSURL:0xe27db20> @body=#<NSConcreteMutableData:0xe27ddb0> @request=#<NSMutableURLRequest:0xe27da70> @connection=#<NSURLConnection:0xe27fad0>>
(main)> {"method"=>"POST", "json"=>"{\"name\":\"marin\"}"}