【问题标题】:Convert string array of objects to json in react native在 React Native 中将对象的字符串数组转换为 json
【发布时间】:2023-01-14 02:19:56
【问题描述】:

我有一个对象的字符串数组来反应本机前端。我不确定如何将其转换为 json 以在前端读取它。这是我需要转换的字符串:

[{_id=63c1400ae18737cd3c67d8d4, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T20:26:54.150Z, timezone=Asia/Seoul, code=11820, offset=3.24E7.0, __ device_name=544008293, user_name=sanj, user_key=7722352345}, {_id=63c12467e18737cd3c67d809, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T35.zone03T35.zone03 =10080, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}]

【问题讨论】:

  • 你好!这是字符串?你如何收到它?你能分享其他信息吗?
  • 是的,这是一个字符串。我从 android 后端的 WritableMap 中得到这个。问题是它已转换为字符串。我必须将其从 ui 转换为阅读

标签: android react-native


【解决方案1】:

let stringArr =
  '[{_id=63c1400ae18737cd3c67d8d4, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T20:26:54.150Z, timezone=Asia/Seoul, code=11820, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}, {_id=63c12467e18737cd3c67d809, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T15:03:53.000Z, timezone=Asia/Seoul, code=10080, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}]';
  
console.log("given array -> ",stringArr)

stringArr = stringArr.replace('[', '').replace(']', '').slice(1).slice(0, -1).split(',');

stringArr = stringArr.map(e => {
  const trimString = e.trim();
  const equalSpilt = trimString.split('=');
  const key = equalSpilt[0];
  const obj = {};
  obj[key] = equalSpilt[1];
  return obj;
});

console.log("final output -> ",stringArr)

如果您可以将数组转换为字符串,则可能

let stringArr =
  '[{_id=63c1400ae18737cd3c67d8d4, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T20:26:54.150Z, timezone=Asia/Seoul, code=11820, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}, {_id=63c12467e18737cd3c67d809, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T15:03:53.000Z, timezone=Asia/Seoul, code=10080, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}]';

stringArr = stringArr.replace('[', '').replace(']', '').slice(1).slice(0, -1).split(',');

stringArr = stringArr.map(e => {
  const trimString = e.trim();
  const equalSpilt = trimString.split('=');
  const key = equalSpilt[0];
  const obj = {};
  obj[key] = equalSpilt[1];
  return obj;
});

【讨论】:

  • 这几乎可以工作,但是当我尝试访问值时,它并不像预期的那样。例如:当我打印 stringArr[0] ====> 它给出 {"_id": "63c1400ae18737cd3c67d8d4"} 这个。不是第一个对象。任何的想法?
  • 那是第一个对象,不是吗,怎么了
【解决方案2】:

你可以这样实现:

let strval =
  "[{_id=63c1400ae18737cd3c67d8d4, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T20:26:54.150Z, timezone=Asia/Seoul, code=11820, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}, {_id=63c12467e18737cd3c67d809, user_id=1185.0, device_serial=544008293, site_id=2000000.0, datetime=2023-01-13T15:03:53.000Z, timezone=Asia/Seoul, code=10080, offset=3.24E7, __v=0.0, device_name=544008293, user_name=sanj, user_key=7722352345}]";

strval = strval.replace("[", "").replace("]", "");

const splittedObj = strval.split("},");

let arr = [];

splittedObj.forEach((e, i) => {
  e = e.replace("{", "").replace("}", "");
  let obj = {};

  e.split(",").map((element) => {
    const splittedElement = element.trim().split("=");
    obj[splittedElement[0]] = splittedElement[1];
  });
  arr.push(obj);
});

console.log(arr);

【讨论】:

  • 这对嵌套对象数组不起作用
  • 尝试更新的代码,让我知道这是您想要的。
猜你喜欢
  • 1970-01-01
  • 2013-08-29
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 2012-05-08
  • 1970-01-01
  • 2018-11-20
相关资源
最近更新 更多