Come posso rinominare i nomi delle chiavi in ​​un json e ricrearlo?

ho il seguente array json (i dati originali provengono da ASP MVC come XML ma li ho convertiti in json)

 {"class":{"@Title":"SOCIAL HISTORY","@ID":"1","@ParentID":"0","helpNavNode":[{"@Title":"ALCOHOL CONSUMPTION","@ID":"2","@ParentID":"1","helpNavNode":[{"@Title":" Never","@ID":"3","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: Never"},{"@Title":" Occasionally","@ID":"4","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: Occasionally"},{"@Title":" Socially","@ID":"5","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: Socially"},{"@Title":" Daily (3 beers/day) (6 pack/day)","@ID":"6","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: Daily (3 beers/day) (6 pack/day)"},{"@Title":" Is Alcoholic","@ID":"7","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: Is Alcoholic"},{"@Title":" History of Alcoholism","@ID":"8","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: History of Alcoholism"},{"@Title":" None","@ID":"26","@ParentID":"2","@Narrative":"ALCOHOL CONSUMPTION: None"},{"@Title":"Alcoholism Screen Question","@ID":"39","@ParentID":"2","helpNavNode":{"@Title":" Ever had a drinking problem? Last drink? ","@ID":"40","@ParentID":"39","@Narrative":"ALCOHOL CONSUMPTION:Alcoholism Screen Question: Ever had a drinking problem? Last drink? "}}]},{"@Title":"MARITAL STATUS","@ID":"9","@ParentID":"1","helpNavNode":[{"@Title":" Married","@ID":"10","@ParentID":"9","helpNavNode":{"@Title":" x 10 years","@ID":"15","@ParentID":"10","@Narrative":"MARITAL STATUS: Married: x 10 years"}},{"@Title":" Divorced","@ID":"11","@ParentID":"9","@Narrative":"MARITAL STATUS: Divorced"},{"@Title":" Single","@ID":"12","@ParentID":"9","@Narrative":"MARITAL STATUS: Single"}]},{"@Title":"Recreational drug use","@ID":"13","@ParentID":"1","@Narrative":":Recreational drug use"},{"@Title":"OCCUPATION","@ID":"14","@ParentID":"1","helpNavNode":{"@Title":" works for x 27 years","@ID":"25","@ParentID":"14","@Narrative":"OCCUPATION: works for x 27 years"}},{"@Title":" 1 child","@ID":"16","@ParentID":"1","@Narrative":": 1 child"},{"@Title":" 2/3/4/5/6 children","@ID":"17","@ParentID":"1","@Narrative":": 2/3/4/5/6 children"},{"@Title":"Activities","@ID":"18","@ParentID":"1","helpNavNode":[{"@Title":" walks regularly","@ID":"19","@ParentID":"18","@Narrative":"Activities: walks regularly"},{"@Title":" cycles for exercise","@ID":"20","@ParentID":"18","@Narrative":"Activities: cycles for exercise"},{"@Title":" runs 3 days/week","@ID":"21","@ParentID":"18","@Narrative":"Activities: runs 3 days/week"},{"@Title":" hunting and fishing","@ID":"22","@ParentID":"18","@Narrative":"Activities: hunting and fishing"},{"@Title":" hiking and camping","@ID":"23","@ParentID":"18","@Narrative":"Activities: hiking and camping"},{"@Title":" swims regularly","@ID":"24","@ParentID":"18","@Narrative":"Activities: swims regularly"}]},{"@Title":"Tobacco Use","@ID":"27","@ParentID":"1","helpNavNode":[{"@Title":"Cigar, Cigarette, Pipe, Smokeless","@ID":"30","@ParentID":"27","helpNavNode":{"@Title":"10/pk year","@ID":"32","@ParentID":"30","@Narrative":"Tobacco Use:Cigar, Cigarette, Pipe, Smokeless:10/pk year"}},{"@Title":"Quit Date","@ID":"35","@ParentID":"27","@Narrative":"Tobacco Use:Quit Date"},{"@Title":"Year Started","@ID":"36","@ParentID":"27","@Narrative":"Tobacco Use:Year Started"}]},{"@Title":"SocHx Template","@ID":"37","@ParentID":"1","helpNavNode":[{"@Title":" Living situation: Occupation: Tobacco: EtOH: Rec. drugs: ","@ID":"41","@ParentID":"37","@Narrative":"SocHx Template: Living situation: Occupation: Tobacco: EtOH: Rec. drugs: "},{"@Title":" Living situation: Occupation: Tobacco: EtOH: Rec. drugs: ","@ID":"42","@ParentID":"37","@Narrative":"SocHx Template: Living situation: Occupation: Tobacco: EtOH: Rec. drugs: "}]}]}} 

due cose che voglio fare con questo:

  1. Voglio rimuovere il simbolo @ da dove appare
  2. ho bisogno di cambiare i nomi delle chiavi nel seguente:

@Title => testo

@ID => id

@ParentID => genitore

@Narrative => valore

C’è via posso fare questo? al momento non avrei idea di come si fanno?

AGGIORNARE:

come è stato creato json . il XMLDocument proviene da classi BLL e il seguente è posto sul client il file XML hard coded ha una copia di ciò che viene restituito da BLL quindi è facile controllarlo nel client (dal mio punto di vista)

 @{ var xdoc = new XmlDocument(); xdoc.Load(Server.MapPath(Url.Content(@"~/App_Data/XMLFile1.xml"))); var jsonObj=JsonConvert.SerializeXmlNode(xdoc); } 

Puoi farlo stringificando il JSON ed eseguendo la manipolazione delle stringhe come mostrato di seguito:

 var mapping = { '@Title': 'text', '@ID': 'id', '@ParentID': 'parent', '@Narrative': 'value' } var temp = JSON.stringify(data); for (key in mapping) { temp = temp.replace(new RegExp(key, 'g'), mapping[key]); } data = JSON.parse(temp.replace(/@/g, '')); 
 var data = { "class": { "@Title": "SOCIAL HISTORY", "@ID": "1", "@ParentID": "0", "helpNavNode": [{ "@Title": "ALCOHOL CONSUMPTION", "@ID": "2", "@ParentID": "1", "helpNavNode": [{ "@Title": " Never", "@ID": "3", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: Never" }, { "@Title": " Occasionally", "@ID": "4", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: Occasionally" }, { "@Title": " Socially", "@ID": "5", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: Socially" }, { "@Title": " Daily (3 beers/day) (6 pack/day)", "@ID": "6", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: Daily (3 beers/day) (6 pack/day)" }, { "@Title": " Is Alcoholic", "@ID": "7", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: Is Alcoholic" }, { "@Title": " History of Alcoholism", "@ID": "8", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: History of Alcoholism" }, { "@Title": " None", "@ID": "26", "@ParentID": "2", "@Narrative": "ALCOHOL CONSUMPTION: None" }, { "@Title": "Alcoholism Screen Question", "@ID": "39", "@ParentID": "2", "helpNavNode": { "@Title": " Ever had a drinking problem? Last drink? ", "@ID": "40", "@ParentID": "39", "@Narrative": "ALCOHOL CONSUMPTION:Alcoholism Screen Question: Ever had a drinking problem? Last drink? " } }] }, { "@Title": "MARITAL STATUS", "@ID": "9", "@ParentID": "1", "helpNavNode": [{ "@Title": " Married", "@ID": "10", "@ParentID": "9", "helpNavNode": { "@Title": " x 10 years", "@ID": "15", "@ParentID": "10", "@Narrative": "MARITAL STATUS: Married: x 10 years" } }, { "@Title": " Divorced", "@ID": "11", "@ParentID": "9", "@Narrative": "MARITAL STATUS: Divorced" }, { "@Title": " Single", "@ID": "12", "@ParentID": "9", "@Narrative": "MARITAL STATUS: Single" }] }, { "@Title": "Recreational drug use", "@ID": "13", "@ParentID": "1", "@Narrative": ":Recreational drug use" }, { "@Title": "OCCUPATION", "@ID": "14", "@ParentID": "1", "helpNavNode": { "@Title": " works for x 27 years", "@ID": "25", "@ParentID": "14", "@Narrative": "OCCUPATION: works for x 27 years" } }, { "@Title": " 1 child", "@ID": "16", "@ParentID": "1", "@Narrative": ": 1 child" }, { "@Title": " 2/3/4/5/6 children", "@ID": "17", "@ParentID": "1", "@Narrative": ": 2/3/4/5/6 children" }, { "@Title": "Activities", "@ID": "18", "@ParentID": "1", "helpNavNode": [{ "@Title": " walks regularly", "@ID": "19", "@ParentID": "18", "@Narrative": "Activities: walks regularly" }, { "@Title": " cycles for exercise", "@ID": "20", "@ParentID": "18", "@Narrative": "Activities: cycles for exercise" }, { "@Title": " runs 3 days/week", "@ID": "21", "@ParentID": "18", "@Narrative": "Activities: runs 3 days/week" }, { "@Title": " hunting and fishing", "@ID": "22", "@ParentID": "18", "@Narrative": "Activities: hunting and fishing" }, { "@Title": " hiking and camping", "@ID": "23", "@ParentID": "18", "@Narrative": "Activities: hiking and camping" }, { "@Title": " swims regularly", "@ID": "24", "@ParentID": "18", "@Narrative": "Activities: swims regularly" }] }, { "@Title": "Tobacco Use", "@ID": "27", "@ParentID": "1", "helpNavNode": [{ "@Title": "Cigar, Cigarette, Pipe, Smokeless", "@ID": "30", "@ParentID": "27", "helpNavNode": { "@Title": "10/pk year", "@ID": "32", "@ParentID": "30", "@Narrative": "Tobacco Use:Cigar, Cigarette, Pipe, Smokeless:10/pk year" } }, { "@Title": "Quit Date", "@ID": "35", "@ParentID": "27", "@Narrative": "Tobacco Use:Quit Date" }, { "@Title": "Year Started", "@ID": "36", "@ParentID": "27", "@Narrative": "Tobacco Use:Year Started" }] }, { "@Title": "SocHx Template", "@ID": "37", "@ParentID": "1", "helpNavNode": [{ "@Title": " Living situation: Occupation: Tobacco: EtOH: Rec. drugs: ", "@ID": "41", "@ParentID": "37", "@Narrative": "SocHx Template: Living situation: Occupation: Tobacco: EtOH: Rec. drugs: " }, { "@Title": " Living situation: Occupation: Tobacco: EtOH: Rec. drugs: ", "@ID": "42", "@ParentID": "37", "@Narrative": "SocHx Template: Living situation: Occupation: Tobacco: EtOH: Rec. drugs: " }] }] } } var mapping = { '@Title': 'text', '@ID': 'id', '@ParentID': 'parent', '@Narrative': 'value' } var temp = JSON.stringify(data); for (key in mapping) { temp = temp.replace(new RegExp(key, 'g'), mapping[key]); } data = JSON.parse(temp.replace(/@/g, '')); console.log(data);