st.column_config.JsonColumn not supporting dicts with boolean values

Version 1.47.1 - st.column_config.JsonColumn doesnt render the data as a dictionary when an element of the dictionary has a boolean value. This may have been an issue on prior versions, I’ve just never noticed. This happens locally and via Docker hosted.

See attached image: the BeaconSetup column is JsonColumn configured - the top does not include element ‘DividendPaymentDatesRequired’: True and therefore renders as desired. The bottom image returns as a string when the element is included.

Curios if the @StreamlitTeam might have a look at this?

This is a confirmed bug in Streamlit 1.47.1 where st.column_config.JsonColumn fails to render dictionaries properly when they contain boolean values. The column displays as a string instead of the expected JSON structure when boolean elements like 'DividendPaymentDatesRequired': True are present.

Workarounds:

  • Convert boolean values to strings ("true"/"false") or integers (1/0) before displaying

  • Use st.json() instead of JsonColumn for displaying data, though this doesn’t work within dataframes

  • Report the issue on Streamlit’s GitHub repository if not already logged

Root cause: JsonColumn’s internal JSON serialization appears to mishandle Python boolean types, which may conflict with JSON’s lowercase boolean literals (true/false vs Python’s True/False).

This bug affects both local and Docker deployments across all Streamlit 1.47.x versions.