For the general case, @Jeff's answer is the way to go. It uses jq's --compact-output (or -c) flag to print each iteration result on its own single line, then uses the shell's read function in a while loop to linewise read the results into a shell variable.
jq -c '.[]' input.json | while read i; do
# do stuff with $i
done
But utilizing that flag comes at the cost of sacrificing the pretty-printing otherwise present in jq's non-compact outputs. If you needed that formatting, the proximate attempt would be to subsequently run other instances of jq on each iteration step to (re-)establish the formatting for each output. However, this can be expensive, especially on large input arrays, and could be generally avoided by retaining the initial formatting while using a delimiter other than the newline character (because the pretty-printed, multi-line output items themselves already do contain newlines characters).
As bash is tagged, one way would be using read's (non-POSIX) -d option to provide a custom delimiter. With an empty string, it defaults to "terminate a line when it reads a NUL character", which can be added to jq's output using "\u0000". As for the jq filter, opening a new context (with |) after the iteration ensures it's printed with every array item. Finally, jq's --join-output (or -j) flag decodes the JSON-encoded NUL character while suppressing the otherwise appended newline characters after each item.
jq -j '.[] | ., "\u0000"' input.json | while read -d '' i; do
# do stuff with pretty-printed, multi-line "$i"
done
Edit: With jq 1.7, a new flag --raw-output0 (note the 0 at the end) was introduced, which behaves just like the regular --raw-output (or -r) flag, but emits NUL characters instead of newlines after each output printed. It thus perfectly covers the last approach while rendering all its manual arrangements (adding "\u0000" and using the -j flag) unnecessary.
jq --raw-output0 '.[]' input.json | while read -d '' i; do
# do stuff with pretty-printed, multi-line "$i"
done
jqhas aforeachcommand, have you tried that?