How can i get JSON ARRAY value from POSTGRESQL(npgsql) table in dotnet core 5

Viewed 58

I am Using dotnet core 5 with PostgreSQL i want to get data from json array to list. how to achieve it, i have tried some methods that found online unfortunately nothing works

Please Have a look at my code and table

My table

CREATE TABLE settings.tbl_settings (
        pk_settings_id BIGSERIAL PRIMARY KEY,

                vhr_settings_sys_name VARCHAR(250) NOT NULL,
        vhr_label VARCHAR(250) NOT NULL,
        vhr_value VARCHAR(500) NOT NULL,
        arj_select_items JSON ARRAY,
        txt_remarks TEXT DEFAULT ''
        
);

I try in C#

foreach (DataRow objRecord in objDataSet.Tables[0].Rows)
{
     mdlSettings.lstSelectItems = JObject.Parse(objRecord["arj_select_items"].ToString());

     or

    mdlSettings.lstSelectItems = (DBNull.Value != objRecord["arj_select_items"]) ? JsonSerializer.Deserialize<List<MdlSettingsValueOptions>>(objRecord["arj_select_items"].ToString()) : mdlSettings.lstSelectItems;

    or

    mdlSettings.lstSelectItems = (DBNull.Value != objRecord["arj_select_items"]) ? JsonConvert.DeserializeObject<List<MdlSettingsValueOptions>>(objRecord["arj_select_items"].ToString()) : mdlSettings.lstSelectItems;



}

Error

Unexpected character encountered while parsing value: S. Path '', line 0, position 0.

i am getting these error

Also i Tried These

var a = objRecord["arj_select_items"].ToString();

Getting These Error

System.String[]
1 Answers

objRecord["arj_select_items"] is not a json, it is an Array of String. So, you should deserialize each element of the array:

foreach (DataRow objRecord in objDataSet.Tables[0].Rows)
{
    mdlSettings.lstSelectItems = ((string[])objRecord["arj_select_items"])
        .Select(item => JsonSerializer.Deserialize<MdlSettingsValueOptions>(item));
}
Related