I am troubleshooting an Execute script processor that takes a JSON response
from a web API and converts it to an HTML table. When I run the code on my
local Windows 10 machine, the processor errors out with an encoding error
very similar to the one mentioned in this Hortonworks forum post
<https://community.hortonworks.com/questions/48624/nifi-executescript-processor-unicodeencodeerror-as.html>.
The error is "Error: UnicodeEncodeError: 'ascii' codec can't encode
character ...". I am trying to maintain UTF-8 via:

IOUtils.toString(inputStream, StandardCharsets.UTF_8)

I am wondering if there is a flag I am missing from the Python json
library. The spec says "this module’s serializer sets ensure_ascii=True by
default" - https://docs.python.org/2/library/json.html#character-encodings

Any ideas?

Here is the full code in case something else stands out.

# class PyStreamCallback(StreamCallback):
#     def __init__(self):
#         pass
#
#     def process(self, inputStream, outputStream):
#         text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
#         json_obj = json.loads(text)
#         html = '<html><style> table, th, td {border: 1px solid
black;border-collapse: collapse;text-align: left;padding:
5px;vertical-align: text-top;}</style>'
#         if 'person' in json_obj:
#             text = "hello"
#             for image in json_obj['person']['images']:
#                 image['url'] = "<a href=\"" + image['url'] + "\">" +
"<img src= \"" + (image['url']) + "\"></img></a>"
#         if 'possible_persons' in json_obj:
#             x = 1
#             for person in json_obj['possible_persons']:
#                 if 'images' in person:
#                     for image in person['images']:
#                         image['url'] = "<a href=\"" + image['url'] +
"\">" + "<img src= \"" + (
#                         image['url']) + "\"></img></a>"
#         html = html + convert(json_obj)
#         html = html + '</html>'
#
#         outputStream.write(bytearray(html.encode('utf-8')))


-- 
Nathan Maynes <http://bit.ly/115hXAt>
@nathanmaynes
-- 
Nathan Maynes <http://bit.ly/115hXAt>
@nathanmaynes

Reply via email to