javascript - Angular 2 : TypeScript/Javascript: Converting JSON string value to proper JSON object

标签 javascript java angularjs json spring

在我的 Angular 2 应用程序中,我收到了以下 JSON 对象,用于我在 Java Spring 的 api 层中开发的 api 调用。 spring 中的 Controller 正在为响应数据返回一个 Map。 (我试过返回 Map,但在 GET 调用中没有呈现任何内容)当在 Angular 端收到时,我的 JSON 对象中每个顶级键值对的值(用引号括起来的 JSON 数组)都用引号括起来,使 JSON 对象无法按 HTML 中此 JSON 数组字符串的名称进行索引/过滤。例如,对于“US/ethnicities”,我无法仅检索实际上是 string 的相应 JSON 数组的“值”。如何将这个 JSON 数组的字符串转换为正确的 JSON 数组?

 {
    "US/ethnicities": "[{\"value\":\"Hispanic/Latino\",\"key\":\"HISPA\"},{\"value\":\"White (Not Hispanic or Latino)\",\"key\":\"WHITE\"},{\"value\":\"Black/African American (Not Hispanic or Latino)\",\"key\":\"BLACK\"},{\"value\":\"Native Hawaiian/Other Pac Island (Not Hispanic or Latino)\",\"key\":\"PACIF\"},{\"value\":\"Asian (Not Hispanic or Latino)\",\"key\":\"ASIAN\"},{\"value\":\"American Indian/Alaska Native (Not Hispanic or Latino)\",\"key\":\"AMIND\"},{\"value\":\"Two or More Races (Not Hispanic or Latino)\",\"key\":\"TWO\"},{\"value\":\"Decline to Specify\",\"key\":\"NSPEC\"}]",
    "countries/US/states": "[{\"value\":\"Alabama\",\"key\":\"AL\"},{\"value\":\"Alaska\",\"key\":\"AK\"},{\"value\":\"American Samoa\",\"key\":\"AS\"},{\"value\":\"Arizona\",\"key\":\"AZ\"},{\"value\":\"Arkansas\",\"key\":\"AR\"},{\"value\":\"California\",\"key\":\"CA\"},{\"value\":\"Colorado\",\"key\":\"CO\"},{\"value\":\"Connecticut\",\"key\":\"CT\"},{\"value\":\"Delaware\",\"key\":\"DE\"},{\"value\":\"District of Columbia\",\"key\":\"DC\"},{\"value\":\"Florida\",\"key\":\"FL\"},{\"value\":\"Georgia\",\"key\":\"GA\"},{\"value\":\"Guam\",\"key\":\"GU\"},{\"value\":\"Hawaii\",\"key\":\"HI\"},{\"value\":\"Idaho\",\"key\":\"ID\"},{\"value\":\"Illinois\",\"key\":\"IL\"},{\"value\":\"Indiana\",\"key\":\"IN\"},{\"value\":\"Iowa\",\"key\":\"IA\"},{\"value\":\"Kansas\",\"key\":\"KS\"},{\"value\":\"Kentucky\",\"key\":\"KY\"},{\"value\":\"Louisiana\",\"key\":\"LA\"},{\"value\":\"Maine\",\"key\":\"ME\"},{\"value\":\"Maryland\",\"key\":\"MD\"},{\"value\":\"Massachusetts\",\"key\":\"MA\"},{\"value\":\"Michigan\",\"key\":\"MI\"},{\"value\":\"Minnesota\",\"key\":\"MN\"},{\"value\":\"Mississippi\",\"key\":\"MS\"},{\"value\":\"Missouri\",\"key\":\"MO\"},{\"value\":\"Montana\",\"key\":\"MT\"},{\"value\":\"Nebraska\",\"key\":\"NE\"},{\"value\":\"Nevada\",\"key\":\"NV\"},{\"value\":\"New Hampshire\",\"key\":\"NH\"},{\"value\":\"New Jersey\",\"key\":\"NJ\"},{\"value\":\"New Mexico\",\"key\":\"NM\"},{\"value\":\"New York\",\"key\":\"NY\"},{\"value\":\"North Carolina\",\"key\":\"NC\"},{\"value\":\"North Dakota\",\"key\":\"ND\"},{\"value\":\"Ohio\",\"key\":\"OH\"},{\"value\":\"Oklahoma\",\"key\":\"OK\"},{\"value\":\"Oregon\",\"key\":\"OR\"},{\"value\":\"Pennsylvania\",\"key\":\"PA\"},{\"value\":\"Puerto Rico\",\"key\":\"PR\"},{\"value\":\"Rhode Island\",\"key\":\"RI\"},{\"value\":\"South Carolina\",\"key\":\"SC\"},{\"value\":\"South Dakota\",\"key\":\"SD\"},{\"value\":\"Tennessee\",\"key\":\"TN\"},{\"value\":\"Texas\",\"key\":\"TX\"},{\"value\":\"Utah\",\"key\":\"UT\"},{\"value\":\"Vermont\",\"key\":\"VT\"},{\"value\":\"Virgin Islands\",\"key\":\"VI\"},{\"value\":\"Virginia\",\"key\":\"VA\"},{\"value\":\"Washington\",\"key\":\"WA\"},{\"value\":\"West Virginia\",\"key\":\"WV\"},{\"value\":\"Wisconsin\",\"key\":\"WI\"},{\"value\":\"Wyoming\",\"key\":\"WY\"}]",
    "genders": "[{\"value\":\"Female\",\"key\":\"F\"},{\"value\":\"Male\",\"key\":\"M\"}]",
    "compensation-types": "[{\"value\":\"Annual\",\"key\":\"A\"},{\"value\":\"Hourly\",\"key\":\"H\"}]",
    "countries": "[{\"value\":\"Canada\",\"key\":\"CA\"},{\"value\":\"United States of America\",\"key\":\"US\"}]",
    "flsa-codes": "[{\"value\":\"Computer Prof-Exempt\",\"key\":\"C\"},{\"value\":\"Computer Prof-Non Exempt\",\"key\":\"Z\"},{\"value\":\"Exempt\",\"key\":\"T\"},{\"value\":\"Non-Exempt\",\"key\":\"N\"}]",
    "employment-types": "[{\"value\":\"Full Time\",\"key\":\"F\"},{\"value\":\"Part Time\",\"key\":\"P\"}]",
    "US/military-statuses": "[{\"value\":\"Not indicated\",\"key\":\"1\"},{\"value\":\"No Military Service\",\"key\":\"2\"},{\"value\":\"Veteran of the Vietnam Era\",\"key\":\"3\"},{\"value\":\"Other Protected Veteran\",\"key\":\"4\"},{\"value\":\"Active Reserve\",\"key\":\"5\"},{\"value\":\"Inactive Reserve\",\"key\":\"6\"},{\"value\":\"Retired Military\",\"key\":\"7\"},{\"value\":\"Veteran (VA Ineligible)\",\"key\":\"8\"},{\"value\":\"Vietnam & Other Protected Vet\",\"key\":\"9\"},{\"value\":\"Pre-Vietnam-Era Veteran\",\"key\":\"B\"},{\"value\":\"Not a Vietnam-Era Veteran\",\"key\":\"N\"},{\"value\":\"Post-Vietnam-Era Veteran\",\"key\":\"P\"},{\"value\":\"Vietnam-Era Veteran\",\"key\":\"V\"},{\"value\":\"Not a Veteran\",\"key\":\"X\"}]"
  }

最佳答案

您可以使用 JSON.parse 将包含有效 JSON 的字符串转换为 JSON。例如:

JSON.parse(字符串)

所以如果你把整个东西打进一个变量a,你可以像这样访问它:

JSON.parse(a['US/ethnicities'])[0]

 { value: 'Hispanic/Latino', key: 'HISPA' }

JSON.parse(a['US/ethnicities'])[1]

{ value: 'White (Not Hispanic or Latino)', key: 'WHITE' } 

关于javascript - Angular 2 : TypeScript/Javascript: Converting JSON string value to proper JSON object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366008/

相关文章:

java - 错误 : No Persistence provider for EntityManager

java - 插入 xml :space ='preserve' in the DOM

angularjs - 使用angularjs打开剑道菜单onClick

jquery - Angular bootstrap 模态打开加载

javascript - 删除线功能

javascript - 解析服务器更新现有的用户字段?

java - Eclipse 中 Java Web 应用程序的结构

javascript - 如何不允许可排序 jquery 列表的部分移动?

javascript - 正确设置父 div 和子 div 的百分比高度

javascript - 检查JSON响应数据是否为空