普元 EOS Platform 7.6 Json和实体对象互相转换方案

转至元数据起始

【解答】 

Demo源码,点击下载,执行建表语句后,插入数据,访问testJDconvert逻辑流可以看到效果

环境:EOS Platform 7.6 开发版+Oracle 10g数据库

转换用的主要代码:

//Json串转实体数组

public static DataObject[] convertJsonStringToDataObjects(
   String entityName, String jsonString) throws JSONException {
  ArrayList<DataObject> result = new ArrayList<DataObject>();

  JSONArray jsonArr = new JSONArray(jsonString);
  for (int i = 0; i < jsonArr.length(); i++) {
   JSONObject json = jsonArr.getJSONObject(i);

   DataObject dataObject = DataObjectUtil.createDataObject(entityName);
   List list = dataObject.getInstanceProperties();
   for (Object object : list) {
    Property key = (Property) object;
    String keyType = key.getType().getName();//获取字段类型
    if (json.has(key.getName())) {
     Object value = json.get(key.getName());
     if (value == JSONObject.NULL)
      continue;
     dataObject.set(key, value);
     dataObject = converType(keyType, key, dataObject, value);
    }

   }
   result.add(dataObject);
  }

  return result.toArray(new DataObject[result.size()]);
 }

//json串转实体对象

public static DataObject convertJsonStringToDataObject(String entityName,
   String jsonString) throws JSONException {
  JSONObject json = new JSONObject(jsonString);
  DataObject dataObject = DataObjectUtil.createDataObject(entityName);
  List list = dataObject.getInstanceProperties();
  for (Object object : list) {
   Property key = (Property) object;
   String keyType = key.getType().getName();//获取字段类型
   if (json.has(key.getName())) {
    Object value = json.get(key.getName());
    if (value == JSONObject.NULL)
     continue;
    dataObject = converType(keyType, key, dataObject, value);//根据不同类型设置值
   } else {
   }
  }
  return dataObject;
 }

//实体转json串

public static String convertDataObjectToJsonString(DataObject dataObject) {
  DataObject[] dataObjects = new DataObject[] { dataObject };
  String jsonString = convertDataObjectsToJsonString(dataObjects);
  jsonString = jsonString.substring(1, jsonString.length() - 1);
  return jsonString;
 }

//实体数组转json串

public static String convertDataObjectsToJsonString(DataObject[] dataObjects) {
  Map<String, DataObject[]> root = new HashMap<String, DataObject[]>();
  root.put("data", dataObjects);

  StringWriter stringWriter = new StringWriter();
  JSONWriter jsonWriter = new JSONWriter(stringWriter);
  try {
   ExtendedXMLSerializer serializer = new ExtendedXMLSerializer();
   SerializeOption operation = new SerializeOption();
   operation.setCreateOuterCollectionNode(true);
   serializer.setOption(operation);
   IMarshallingNode node = serializer.marshallToNode(root, "root");
   jsonWriter.object();
   List<IMarshallingNode> children = node.getChildren();
   for (IMarshallingNode child : children) {
    write(child, jsonWriter);
   }
   jsonWriter.endObject();
  } catch (Exception e) {
   e.printStackTrace();
   throw new RuntimeException(e.getMessage());
  }
  String jsonString = stringWriter.toString();
  jsonString = jsonString.substring(8, jsonString.length() - 1);
  return jsonString;
 }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值