public PayloadType JsonPayloadType => PayloadType.UnknownType; //PayloadType.PermissionNode; public void WriteToJson(Utf8JsonWriter writer, WritedObjects objrefs) { writer.WriteString("Id", Model == null ? /*随机*/ Guid.NewGuid().ToString() : Model.Id.ToString()); writer.WriteString(nameof(Name), Name); if (_childs != null && _childs.Count > 0) { writer.WritePropertyName(nameof(Childs)); writer.WriteList(_childs, objrefs); } if (Model != null) //注意不管有无OrgUnits都需要序列化,因为前端用于判断是否权限节点 { writer.WritePropertyName("OrgUnits"); writer.WriteStartArray(); if (Model.HasOrgUnits) { for (int i = 0; i < Model.OrgUnits.Count; i++) { writer.WriteStringValue(Model.OrgUnits[i]); } } writer.WriteEndArray(); } }
void IJsonSerializable.WriteToJson(Utf8JsonWriter writer, WritedObjects objrefs) { var model = Model; EntityMemberModel mm; for (int i = 0; i < model.Members.Count; i++) { mm = model.Members[i]; ref EntityMember m = ref GetMember(mm.Name); switch (mm.Type) { case EntityMemberType.EntityRef: if (m.HasValue) //注意:无加载值不写入给前端 { writer.WritePropertyName(mm.Name); writer.Serialize(m.ObjectValue, objrefs); } break; case EntityMemberType.EntitySet: if (m.HasValue) //注意:无加载值不写入给前端 { writer.WritePropertyName(mm.Name); writer.WriteList((IList)m.ObjectValue, objrefs); } break; case EntityMemberType.EntityRefDisplayText: if (m.HasValue) //注意:无加载值不写入给前端 { writer.WritePropertyName(mm.Name); writer.WriteStringValue((string)m.ObjectValue); } break; case EntityMemberType.DataField: writer.WritePropertyName(mm.Name); if (m.HasValue) { switch (m.ValueType) { case EntityFieldType.Binary: writer.WriteBase64StringValue((byte[])m.ObjectValue); break; case EntityFieldType.Boolean: writer.WriteBooleanValue(m.BooleanValue); break; case EntityFieldType.Byte: writer.WriteNumberValue(m.ByteValue); break; case EntityFieldType.DateTime: writer.WriteStringValue(m.DateTimeValue); break; case EntityFieldType.Decimal: writer.WriteNumberValue(m.DecimalValue); break; case EntityFieldType.Double: writer.WriteNumberValue(m.DoubleValue); break; case EntityFieldType.Enum: writer.WriteNumberValue(m.Int32Value); break; case EntityFieldType.Float: writer.WriteNumberValue(m.FloatValue); break; case EntityFieldType.Guid: writer.WriteStringValue(m.GuidValue); break; case EntityFieldType.EntityId: writer.WriteStringValue((Guid)((EntityId)m.ObjectValue)); break; case EntityFieldType.Int16: writer.WriteNumberValue(m.Int16Value); break; case EntityFieldType.UInt16: writer.WriteNumberValue(m.UInt16Value); break; case EntityFieldType.Int32: writer.WriteNumberValue(m.Int32Value); break; case EntityFieldType.UInt32: writer.WriteNumberValue(m.UInt32Value); break; case EntityFieldType.Int64: writer.WriteNumberValue(m.Int64Value); break; case EntityFieldType.UInt64: writer.WriteStringValue(m.UInt64Value.ToString()); break; //暂序列化为字符串 case EntityFieldType.String: writer.WriteStringValue((string)m.ObjectValue); break; default: throw new NotSupportedException(); } } else { writer.WriteNullValue(); } break; default: throw ExceptionHelper.NotImplemented(); //writer.WritePropertyName(m.Name); //writer.Serialize(m.BoxedValue); //break; } }