1
class Program {
static void Main(string[] args)
{
    //This is your input json string
    var inputJson = @"{
                  'datamapItems': [
                               {
                                  'paramName': 'VE8321C',
                                  'datamapKey': {
                                               'module': 1,
                                               'id': 1391
                                  },
                                  'min': '0',
                                  'max': '40',
                                  'default': 222,
                                  'rateHz': 0,
                                  'timeoutMs': 0,
                                  'dataType': 'uint16'
                                }
                             ]
                       }";

        clsJSON result = JsonConvert.DeserializeObject<clsJSON>(inputJson); 
    }
}
public class clsJSON
{
      public Datamap datamap;
}
public class Datamap
{
    [JsonExtensionData]
    public Dictionary<string, JToken> DatamapFields = new Dictionary<string, JToken>();
    public List<DatamapItem> DatamapItems;
}
public class DatamapItem
{
    [JsonExtensionData]
    public Dictionary<string, JToken> DatamapItems = new Dictionary<string, JToken>();
    public DatamapKey DatamapKey;
}
public class DatamapKey
{
    [JsonExtensionData]
    public Dictionary<string, JToken> DatamapKeys = new     Dictionary<string, JToken>();
}

I have read JSON data into classes using a given class structure as shown above. Now I want to insert read data into database. clsJSON result = JsonConvert.DeserializeObject(inputJson); this line read all the data from json.

Table Matrix for insert:

db_table_name   json_table_name db_column_name  json_column_name
datamapItems    tblECISOCode    code_name   paramName
datamapKey          tblECISOCode    producer_module module
datamapItems    tblECISOCode    ec_iso_code_id  id
datamapItems    tblECISOCode    minimum         min
datamapItems    tblECISOCode    maximum         max
datamapItems    tblECISOCode    NULL            rateHz

Below is the json template

{
    "datamap": {
        "__comment__dataMapElements__": "",
        "version_cfg_data": "0",
        "version_json_syntax": "0",
        "fnd_chains_input_file": "Configurator",
        "datamapItems": [{
            "paramName": "tblECISOCode@code_name",
            "datamapKey": {
                "module": "tblECISOCode@producer_module,
                "id": "tblECISOCode@ec_iso_code_id"
            },
            "min": "tblECISOCode@minimum",
            "max": "tblECISOCode@maximum",
            "default": 0,
            "rateHz": "tblECISOCode@broadcast_frequency_rate_id->FK(tblDataType@data_type)",
            "dataType": "tblECISOCode@data_type_id->FK(tblDataType@data_type)",
            "internalUnit": "tblECISOCode@internal_unit_id->FK(tblInternalUnit@internal_unit)",
            "displayUnit": "tblECISOCode@display_unit_id->FK(tblInternalUnit@internal_unit)",
            "GuiName": "tblECISOCode@description",
            "application": "tblECISOCode@application_id->FK(tblApplicationEnable@application)",
            "accessRole": "access_role_id->FK(tblRole@role)"
        },      
        "__comment__json_format__": "If tblECISOCode@is_cylinder_code is true, then:"       
        {
            "paramName": "tblECISOCode@code_name+1", cat("tblECISOCode@code_name","1"),     test1
            "datamapKey": {
                "module": tblECISOCode@producer_module[1],
                "id": tblECISOCode@ec_iso_code_id
            },
            "min": tblECISOCode@minimum,
            "max": tblECISOCode@maximum,
            "default": 0,
            "rateHz": tblECISOCode@broadcast_frequency_rate,
            "dataType": "tblECISOCode@data_type_id->FK(tblDataType@data_type)",
            "internalUnit": "tblECISOCode@internal_unit_id->FK(tblInternalUnit@internal_unit)",
            "displayUnit": "tblECISOCode@display_unit_id->FK(tblInternalUnit@internal_unit)",
            "GuiName": "tblECISOCode@description",
            "application": "tblECISOCode@application_id->FK(tblApplicationEnable@application)",
            "accessRole": "access_role_id->FK(tblRole@role)"
        },
        {
            "paramName": "tblECISOCode@code_name+2",test2
            "datamapKey": {
                "module": tblECISOCode@producer_module[2],
                "id": tblECISOCode@ec_iso_code_id
            },
            "min": tblECISOCode@minimum,
            "max": tblECISOCode@maximum,
            "default": 0,
            "rateHz": tblECISOCode@broadcast_frequency_rate,
            "dataType": "tblECISOCode@data_type_id->FK(tblDataType@data_type)",
            "internalUnit": "tblECISOCode@internal_unit_id->FK(tblInternalUnit@internal_unit)",
            "displayUnit": "tblECISOCode@display_unit_id->FK(tblInternalUnit@internal_unit)",
            "GuiName": "tblECISOCode@description",
            "application": "tblECISOCode@application_id->FK(tblApplicationEnable@application)",
            "accessRole": "access_role_id->FK(tblRole@role)"
        },
        ......
        {
            "paramName": "tblECISOCode@code_name+12",test12
            "datamapKey": {
                "module": tblECISOCode@producer_module[12],
                "id": tblECISOCode@ec_iso_code_id
            },
            "min": tblECISOCode@minimum,
            "max": tblECISOCode@maximum,
            "default": 0,
            "rateHz": tblECISOCode@broadcast_frequency_rate,
            "dataType": "tblECISOCode@data_type_id->FK(tblDataType@data_type@data_type)",
            "internalUnit": "tblECISOCode@internal_unit_id->FK(tblInternalUnit@internal_unit)",
            "displayUnit": "tblECISOCode@display_unit_id->FK(tblInternalUnit@internal_unit)",
            "GuiName": "tblECISOCode@description",
            "application": "tblECISOCode@application_id->FK(tblApplicationEnable@application)",
            "accessRole": "access_role_id->FK(tblRole@role)"
        }
}

Above JSON provide a detailed template.

Suhel Patel
  • 278
  • 1
  • 12
  • `I want to insert read data into database **using class as data is stored into classes.**` what? – slow Oct 16 '18 at 08:36
  • I recommend researching how to connect to a Database with C# and following a tutorial. A keyword is "EntityFramework", this is used by many people, has good documentation and is relatively newb friendly – MindSwipe Oct 16 '18 at 08:44
  • I Want to store read result into database – Suhel Patel Oct 16 '18 at 08:58
  • @SuhelPatel, your json key/value pairs are dynamic, but for sql you need columns that are known, so here i suggest u to insert whole json string in sql as it is and when u read it from sql then deserialize it again into your classes – er-sho Oct 17 '18 at 06:24
  • @SuhelPatel, could u plz add this matrix table in your question? – er-sho Oct 17 '18 at 06:46
  • @ershoaib By this how can I store my data into particular table and column – Suhel Patel Oct 17 '18 at 06:49
  • @SuhelPatel, show your matrix table first. then i get all idea about – er-sho Oct 17 '18 at 06:50
  • json_column_matrix_id db_table_name json_table_name db_column_name json_column_name 1 datamapItems tblECISOCode code_name paramName 2 datamapKey tblECISOCode producer_module module 3 datamapItems tblECISOCode ec_iso_code_id id 4 datamapItems tblECISOCode minimum min NULL datamapItems tblECISOCode maximum max NULL datamapItems tblECISOCode NULL rateHz – Suhel Patel Oct 17 '18 at 06:52
  • @SuhelPatel, its not in readable format plz add this in your question not in comment with proper format – er-sho Oct 17 '18 at 06:54
  • @ershoaib I have updated the Question and also provide the template of JSON – Suhel Patel Oct 17 '18 at 09:32
  • @SuhelPatel, it seems that it's a time consuming task, if i get enough time then i'll post an answer, upto u try to develop an logic for this :) – er-sho Oct 18 '18 at 01:05
  • @er-sho Can we achive above json like shown below : { "datamapItems": [ { "paramName": "VE8321C", "datamapKey": { "module": 1, "id": 1391 }, "min": "0", "max": "40" }, { "paramName": "VE8321C", "min": "0", "max": "40" }, { "paramName": "VE8321C", "datamapKey": { "module": 1, "id": 1391 }, "datamapKey1": { "module": 1, "id": 1391 }, "min": "0", "max": "40" } ] } – Suhel Patel Jun 21 '19 at 05:13
  • @er-sho Can you please solve this: https://stackoverflow.com/questions/56697644/serialize-json-object-as-per-the-condition-using-c-sharp-and-json-net – Suhel Patel Jun 21 '19 at 06:36

0 Answers0