I think you are saying that the metafield is a list of single line text. You might see the following
# Case 1 - null
# Case 2 - empty list
[]
# Case 3 - single value
["foo"]
Case 4 - multiple values
["foo","bar"]
For final value, instead of:
{% assign final_value = category_info | remove: "[" | remove: "]" | remove: '"' | strip %}
Try:
{% assign final_value_list = category_info | remove: "[" | remove: "]" | split:"," %}
{% for final_value in final_value_list %}{% if forloop.first %}{{ final_value | strip | remove: '"' }}{% endif %}{% endfor %}
This handles case 3 and 4.
Also you probably want to add some hyphens to your tags to strip out new lines around your api call