C# комплекс JSON для перечисления <>C#

Место общения программистов C#
Ответить
Anonymous
 C# комплекс JSON для перечисления <>

Сообщение Anonymous »

Я пытаюсь понижать анонимный тип в файле JSON с Newtonsoft.user_info - Deserialize okay
server_info - Deserialize okay

categories, series - Deserialize okay
categories, movies - Deserialize okay

categories, live - Deserialize okay

channels - will not work :-( because the numbers between "" is variable

Я должен что -то сделать с [jsonproperty (propertyname = "..")] :
#region Properties
[JsonProperty(PropertyName = "id")]
public int TvId { get; set; }

[JsonProperty(PropertyName = "name")]
public string TvName{ get; set; }
#endregion
< /code>
Но я не получил его работать. < /p>
Вот мой код: < /p>
//\**************** class1.cs *********************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test_Json_TV_Object

{
public class Data
{ public UserInfo User_info = new UserInfo();
public ServerInfo Server_info = new ServerInfo();
public Categories Categories = new Categories();
public Channels Channels = new Channels();
}

public class UserInfo
{
public int auth { get; set; }
public string? status { get; set; }
public string[]? allowed_output_formats { get; set; }
}

public class ServerInfo
{
public string? url { get; set; }
public string? port { get; set; }
public string? server_protocol { get; set; }
}

public class Categories
{
public List live = new List();
public List movies = new List();
public List series = new List();
public List radio = new List();
}

public class Category_att
{
public string? category_id { get; set; }
public string? category_name { get; set; }
public int parent_id { get; set; }
}

public class Channels
{
public int channel_nr { get; set; }
public List channelx = new List();
}
}

public class Channel
{
public int num { get; set; }
public string? name { get; set; }
public string? stream_type { get; set; }
public string? type_name { get; set; }
public string? stream_id { get; set; }
public string? stream_icon { get; set; }
public int? tv_archive_duration { get; set; }
}

//******************* form1.cs *************************
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace Test_Json_TV_Object
{
public partial class Form1 : Form{

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string bestand = @"d:\Data\testFile.json";

string Ret = File.ReadAllText(bestand);

Data data = new Data();

dynamic result = JsonConvert.DeserializeAnonymousType(Ret, data);
}
}
< /code>
testFile.json:
{ "user_info": {
"auth": 1,
"status": "Active",
"allowed_output_formats": ["m3u8", "ts"]
},
"server_info": {
"url": "abc.xyz",
"port": "80",
"server_protocol": "http"
},
"categories": {
"series": [
{
"category_id": "419",
"category_name": "SRS | TV SHOWS [EN]",
"parent_id": 0
},
{
"category_id": "424",
"category_name": "SRS | ANIME [EN]",
"parent_id": 0
},
{
"category_id": "344",
"category_name": "SRS | FRENCH",
"parent_id": 0
},
{
"category_id": "445",
"category_name": "SRS | FR - ANIME",
"parent_id": 0
},
{
"category_id": "425",
"category_name":"SRS | ARABIC [ASIA]",
"parent_id": 0
},
{
"category_id": "355",
"category_name":"SRS | ARABIC [TR] \\u0645",
"parent_id": 0
},
{
"category_id": "597",
"category_name":"SRS | MALAYSIA",
"parent_id": 0
},
{
"category_id": "347",
"category_name":"SRS | DEUTSCH",
"parent_id": 0
},
{
"category_id": "438",
"category_name":"SRS | ALBANIA",
"parent_id": 0
},
{
"category_id": "598",
"category_name": "SRS | ROMANIA",
"parent_id": 0
},
{
"category_id": "773",
"category_name":"SRS | DOMACE SERIJE [EXYU]",
"parent_id": 0
}
],
"movies": [
{
"category_id": "266",
"category_name": "VOD | EN LATEST MOVIES",
"parent_id": 0
},
{
"category_id": "422",
"category_name": "VOD | NETFLIX [EN]",
"parent_id": 0
},
{
"category_id": "423",
"category_name": "VOD | DISNEY+ [EN]",
"parent_id": 0
},
{
"category_id": "476",
"category_name":"VOD | MARVEL [EN]",
"parent_id": 0
},
{
"category_id": "480",
"category_name": "VOD | DC [EN]",
"parent_id": 0
}
],
"live": [
{
"category_id": "580",
"category_name": "VIP | FORMULA 1",
"parent_id": 0
},
{
"category_id": "373",
"category_name":"EU | FRANCE GENERAL",
"parent_id": 0
},
{
"category_id": "363",
"category_name": "EU | FRANCE SPORTS",
"parent_id": 0
},
{
"category_id": "589",
"category_name":"EU | FR AMAZON PRIME",
"parent_id": 0
},
{
"category_id": "546",
"category_name": "IN | MARATHI",
"parent_id": 0
}
],
"channels": {
"69241": {
"num": 1,
"name":"##### MY - MALAYSIA #####",
"stream_type": "live",
"type_name": "Live Streams",
"stream_id": "69241",
"tv_archive_duration": 0
},
"260551": {
"num": 3,
"name":"MY - FRANCE24",
"stream_type": "live",
"type_name": "Live Streams",
"stream_id": "260551",
"tv_archive_duration": 0
},
"260553": {
"num": 4,
"name": "MY - DW",
"stream_type": "live",
"type_name": "Live Streams",
"stream_id": "260553",
"tv_archive_duration": 0
},
"260554": {
"num": 5,
"name": "MY - SKY NEWS",
"stream_type": "live",
"type_name": "Live Streams",
"stream_id": "260554",
"tv_archive_duration": 0
}
}
}
< /code>
I tried something like this :
dynamic result = JsonConvert.DeserializeAnonymousType(Ret, data);
< /code>
Ret - текст JSON, Data - список с общим классом
var Test1 = JsonConvert.DeserializeObject(Ret)
var Test2 = JsonSerializer.Deserialize(Ret);


Подробнее здесь: https://stackoverflow.com/questions/789 ... on-to-list
Ответить

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

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

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

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

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