If you get those kind of error messages it could be a good idea to try the Hamcrest default error messages instead (see errorDescriptionType in com.jayway.restassured.config.MatcherConfig).
Anyway I looked at your code a little more closely and know I see what's going on. There are several problems with the test but it's a bit tricky :). First off all you're using the hamcrest matcher to validate the entire response and not a specific path. For example this matcher would word against the entire response body and not just a json/xml path:
.. .content(containsString("html")) ..
This means that "content(arrayContaining(BigDecimal.valueOf(100), BigDecimal.valueOf(50), BigDecimal.valueOf(31.0)))" will never work in your case since you're comparing the entire content with the "arrayContaining" matcher. What you want to do is to compare the unnamed root element with the "hasItems" matcher. An unnamed root element is indicated by an empty string as path or a $.
Secondly integers are not represented as BigDecimal's since integers are exact by definition. Only floats and doubles are represented as BigDecimal (see javadoc and
usage guide). So your code should probably look like this: