Here is an example of a summon code I am using on my game.
/summon Villager ~ ~1 ~ {Profession:5,Career:1,CareerLevel:100,CustomName:Cecilia,CustomNameVisible:1,Offers:{Recipes:[{rewardExp:0,maxUses:999,uses:0,buy:{id:minecraft:gold_nugget,Count:2},sell:{id:minecraft:mushroom_stew,Count:1}}]}}
The code appears to be correct as advised by the wiki, but the summoned villager will still provide EXP when the trade has been made. The only way to stop the villager from providing EXP is to set the gamerule DoMobLoot to false.
Unless my formatting is incorrect, this appears to be a bug.
booleans are: 0b or 1b (the b is mandatory)