While Ryan's for each approach would work (not many good options in my opinion), you better figure out how you want to handle errors if the 2nd web service call for a line item in a 1000 line items throws an exception for whatever reason...
Consult Ryan Carter's other answer to handle that: How to catch exceptions in the Mule foreach scope but keep the process going?
In my use case, my payload was a list of strings where each string was json representing an order. I went with a custom java transformer (wasn't allowed to use groovy in an expression transformer) and just made my json that way. Not the best solution, but seemed the lesser of evils.
Groovy would be something like (Not tested at all):
#[groovy: '{"orders":[' + payload.join(', ') + ']}']