Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deserializer skips objects in array #103

Open
snaffi opened this issue Jan 13, 2025 · 0 comments
Open

Deserializer skips objects in array #103

snaffi opened this issue Jan 13, 2025 · 0 comments

Comments

@snaffi
Copy link

snaffi commented Jan 13, 2025

Hello
That large JSON couldn't be parsed correctly. It skips any element except one in menu.groups array

healthy-co.json

image

Model

import {JSON} from "json-as/assembly";

@json
export class Name {
    value!: string;
    @alias("localized_value")
    localizedValue!: string;
}

@json
export class Location {
    value!: string;
    @alias("localized_value")
    localizedValue!: string;
}

@json
export class Coordinate {
    lat!: f64;
    lng!: f64;
}

@json
export class Distance {
    value!: f64;
    unit!: string;
    @alias("unit_localized")
    unitLocalized!: string;
}

@json
export class Cuisine {
    id!: i64;
    name!: string;
    @alias("name_localized")
    nameLocalized!: string;
}

@json
export class Currency {
    id!: i64;
    code!: string;
    name!: string;
    label!: string;
    @alias("label_localized")
    labelLocalized!: string;
    position!: string;
    decimals!: i32;
    @alias("name_localized")
    nameLocalized!: string;
}

@json
export class Rating {
    average!: f32;
    count!: i32;
    state!: string;
    @alias("count_text")
    countText!: string;
}

@json
export class Scale {
    value!: i32;
    @alias("upper_bound")
    upperBound!: i32;
}

@json
export class PriceRating {
    average!: i32;
    range!: string;
    scale!: Scale;
}

@json
export class Term {
    term!: string;
    @alias("term_localized")
    termLocalized!: string;
}

@json
export class TextAttribute {
    @alias("attribute_name")
    attributeName!: string;
    value!: string;
    @alias("value_localized")
    valueLocalized!: string;
}

@json
export class Promotion {
    id!: i64;
    percentage!: i32;
    @alias("total_percentage")
    totalPercentage!: i32;
    @alias("internal_subsidize")
    internalSubsidize!: i32;
    cap!: i32;
    @alias("badge_type")
    badgeType!: string;
    value!: i32;
    @alias("min_basket_value")
    minBasketValue!: i32;
    text!: string;
    @alias("text_localized")
    textLocalized!: string;
    terms!: Array<Term> | null;
    @alias("text_attributes")
    textAttributes!: Array<TextAttribute> | null;
}

@json
export class MenuCurrency {
    id!: i64;
    code!: string;
    name!: string;
    label!: string;
    @alias("label_localized")
    labelLocalized!: string;
    position!: string;
    decimals!: i32;
    @alias("name_localized")
    nameLocalized!: string;
}

@json
export class Price {
    original!: f64;
    discount!: f64;
    total!: f64;
    @alias("discount_percentage")
    discountPercentage!: i32;
}

@json
export class MenuGroupOption {
    id!: i64;
    item!: string;
    @alias("item_localized")
    itemLocalized!: string;
    price!: Price;
    groups!: Array<MenuGroup> | null;
    @alias("is_active")
    isActive: bool = true;
}

@json
export class MenuGroup {
    id!: i64;
    name!: string;
    description!: string;
    type!: string;
    @alias("multi_select")
    multiSelect!: boolean;
    min!: i32;
    max!: i32;
    order!: i32;
    active!: boolean;
    @alias("name_localized")
    nameLocalized!: string;
    @alias("description_localized")
    descriptionLocalized!: string;
    options!: Array<MenuGroupOption> | null;
}


@json
export class OperationalShift {
    @alias("start_time")
    startTime!: string;
    @alias("end_time")
    endTime!: string;
}

@json
export class OperationalHours {
    @alias("day_of_week")
    dayOfWeek!: i32;
    active!: boolean;
    shifts!: Array<OperationalShift> | null;
}

@json
export class MenuItem {
    id!: i64;
    item!: string;
    @alias("item_localized")
    itemLocalized!: string;
    link!: string;
    @alias("superapp_link")
    superappLink!: string;
    @alias("image_url")
    imageUrl!: string;
    @alias("images_urls")
    imagesUrls!: Array<string> | null;
    description!: string;
    @alias("description_localized")
    descriptionLocalized!: string;
    price!: Price;
    active!: boolean;
    order!: i32;
    @alias("maximum_quantity")
    maximumQuantity!: i32;
    @alias("operational_hours")
    operationalHours!: Array<OperationalHours> | null;
    groups!: Array<MenuGroup> | null;
    @alias("inactivity_reason")
    inactivityReason!: string | null;
    @alias("inactivity_text")
    inactivityText!: string | null;
}

@json
export class MenuGroupItem {
    id!: i64;
    name!: string;
    @alias("name_localized")
    nameLocalized!: string;
    active!: boolean;
    @alias("image_url")
    imageUrl!: string;
    @alias("category_type")
    categoryType!: string;
    @alias("items_layout")
    itemsLayout!: string;
    items: Array<MenuItem> | null = [];
}

@json
export class Menu {
    id!: i64;
    currency!: MenuCurrency;
    active!: boolean;
    groups!: Array<MenuGroupItem> | null;
}

@json
export class Delivery {
    @alias("delivery_method")
    deliveryMethod!: string;
    @alias("delivery_type")
    deliveryType!: string;
    average!: i32;
    range!: string;
    unit!: string;
    @alias("unit_localized")
    unitLocalized!: string;
    source!: string;
    @alias("careem_delivery_fee")
    careemDeliveryFee!: i32;
    @alias("is_careem_delivery_supported")
    isCareemDeliverySupported!: boolean;
    fee!: i32;
    @alias("distance_in_km")
    distanceInKm!: f64;
    @alias("color_state")
    colorState!: string;
}

@json
export class Tag {
    id!: i64;
    name!: string;
    link!: string;
    global!: boolean;
    @alias("name_localized")
    nameLocalized!: string;
}

@json
export class Brand {
    id!: i64;
    name!: string;
    count!: i32;
    @alias("brand_media")
    brandMedia!: Array<string> | null;
    @alias("name_localized")
    nameLocalized!: string;
}

@json
export class OrderCount {
    count!: i32;
    max!: i32;
    since!: i32;
    ratio!: f32;
}

@json
export class MerchantSubText {
    type!: string;
    text!: string;
}

@json
export class AvailabilityDetails {
    @alias("is_available")
    isAvailable!: boolean;
}

@json
export class Restaurant {
    @alias("id")
    merchantID!: i64;
    @alias("merchant_type")
    merchantType!: string;
    name!: Name;
    location!: Location;
    coordinate!: Coordinate;
    distance!: Distance;
    cuisines!: Array<Cuisine> | null;
    currency!: Currency;
    rating!: Rating;
    price!: PriceRating;
    @alias("preparation_time")
    preparationTime!: i32;
    promotions!: Array<Promotion> | null;
    link!: string;
    menu!: Menu;
    @alias("superapp_link")
    superappLink!: string;
    @alias("image_url")
    imageUrl!: string;
    @alias("logo_url")
    logoUrl!: string;
    @alias("min_order")
    minOrder!: i32;
    delivery!: Delivery;
    @alias("has_items")
    hasItems!: boolean;
    tags!: Array<Tag>;
    @alias("include_tax")
    includeTax!: boolean;
    @alias("contract_id")
    contractid!: i64;
    @alias("included_tax")
    includedTax!: i32;
    @alias("business_type")
    businessType!: string;
    @alias("menu_layout")
    menuLayout!: string;
    @alias("item_count")
    itemCount!: i32;
    @alias("delivery_zones")
    deliveryZones!: Array<string> | null;
    @alias("food_zones_enabled")
    foodZonesEnabled!: boolean;
    brand!: Brand;
    @alias("brand_id")
    brandId!: i64;
    @alias("is_new")
    isNew!: boolean;
    @alias("order_count")
    orderCount!: OrderCount;
    @alias("merchant_sub_text")
    merchantSubText!: Array<MerchantSubText> | null;
    @alias("availability_details")
    availabilityDetails!: AvailabilityDetails;
    @alias("customer_name")
    customerName!: string;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant