Используйте System.Text.Json для условной сериализации объекта как одной строкиC#

Место общения программистов C#
Ответить
Anonymous
 Используйте System.Text.Json для условной сериализации объекта как одной строки

Сообщение Anonymous »

Я работаю над реализацией ActivityPub на C#, и иногда ссылки представляют собой «строки», такие как URL-ссылки, а иногда ссылки представляют собой объекты с подтипом Link. (Ссылка: Entity)
Мне интересно, есть ли возможный способ использовать System.Text.Json для сериализации объекта Link в виде строки, если определенный набор условий истинен (просто записать одну строку в записывающее устройство) и записать в записывающее устройство весь объект по умолчанию, если условие неверно.
Я пробовал использовать это решение: Как использовать сериализацию по умолчанию в пользовательском System.Text.Json JsonConverter?, который все еще работает над скриптом кода, но не работает для моей реализации, и я не совсем понимаю, почему.
Кто-нибудь знает, как я могу это отладить или лучший способ сделать конечно, Link : Entity объекты могут иногда сериализоваться в строки?
При этом я получаю следующую ошибку:
Изображение

(в этом случае я даже пытался добавить полученный по умолчанию ctor в
ModifiedOptions)
Несмотря на это, он говорит, что для класса Link нет данных.
Я также пробовал добавить атрибут JsonSerializeable непосредственно в класс Link.< /p>
Ошибка:

Метаданные для типа «ActivityPub.Types.Link» не были предоставлены сериализатору. Используемый метод сериализатора не поддерживает создание метаданных типов, связанных с сериализацией, на основе отражения. При использовании генерации исходного кода убедитесь, что все корневые типы, переданные сериализатору, указаны с помощью JsonSerializableAttribute, а также все типы, которые могут быть сериализованы полиморфно

Моя библиотека базового кода: https://github.com/Meep-Tech/ActivityHu ... ialization
Тестовый код:
static void Main(string[] args) {
Settings.DefaultContext = new Link("ActivityPub.Net.Testing");

var testObject = new Object {
Type = "Test",
At = new Link("/terry") {
Rels = new string[] {
"test",
"test2"
}
},
Attribution = "/meep",
Audience = new Link("/all") {
Rel = "test"
}
};

string json = testObject
.Serialize();

System.IO.File.WriteAllLines(
"test.json",
new[] { json }
);

Object @object = json.DeSerializeEntity();
System.IO.File.WriteAllLines(
"test1.json",
new[] { @object.ToString() }
);
}


Подробнее здесь: https://stackoverflow.com/questions/702 ... ditionally
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»