Can JSON data be retrieved from an API using WebAssembly and then manipulated in JavaScript?

I'm just starting to explore webassembly and I am attempting to manipulate JSON data that I fetch from either a file or URL within a Webassembly compiled module. My goal is to access this JSON in JavaScript so that I can effectively read and manipulate it there.

Despite my efforts, the only example I came across was on fetching data from a file and saving it to IndexedDB using . However, the output turned out to be unreadable bytes instead of the expected JSON format.

In the fetch.c file:

void downloadSucceeded(emscripten_fetch_t *fetch) {
printf("Finished downloading %llu bytes from URL %s.\n", fetch->numBytes, fetch->url);
// The data is now available at fetch->data[0] through fetch->data[fetch->numBytes-1];
emscripten_fetch_close(fetch); // Free data associated with the fetch.
}

void downloadFailed(emscripten_fetch_t *fetch) {
printf("Downloading %s failed, HTTP failure status code: %d.\n", fetch->url, fetch->status);
emscripten_fetch_close(fetch); // Also free data on failure.
}

int main() {
emscripten_fetch_attr_t attr;
emscripten_fetch_attr_init(&attr);
strcpy(attr.requestMethod, "GET");
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_PERSIST_FILE;
attr.onsuccess = downloadSucceeded;
attr.onerror = downloadFailed;
emscripten_fetch(&attr, "./json/bol_list1.json");
}

Post compiling this to .js, the console confirms that the download was successful, fetching 16507 bytes from the JSON file, and it is stored into IndexedDB. However, the issue lies in the fact that the result is not easily readable since it doesn't resemble standard JSON formatting.

JSON file : https://pastebin.com/WBJrYgPR

IndexedDB result: https://i.sstatic.net/2LmBv.png

Answer №1

That appears to be a sequence of bytes. The byte values in your provided screenshot are

123 034 111 114 105 110 097 108 082 101 113 117 101 115 034 058
, which decodes to "{"orinalReques":.

If the string is encoded in utf-8, you can decode it using the following JavaScript code:

var decoder = new TextDecoder("utf-8");
decoder.decode(array);

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Incorporating React's dynamic DIV layout algorithm to generate a nested box view design

My goal is to showcase a data model representation on a webpage, depicting objects, attributes, and child objects in a parent-child hierarchy. I had the idea of developing a versatile React component that can store a single data object while also allowing ...

Vue has the ability to automatically escape HTML characters

Take a look at one of the methods I have computed: filtered() { return this.groups.map(group => { return group.replace(this.search, '<span class="has-background-primary">' + this.search + ...

Determining the Most Frequent Number in an Array Using Reduce and Filter in JavaScript

Looking at this function: const mode = arr => arr.reduce( (a,b,i,arr) => (arr.filter(c=> c === a).length >= arr.filter(c => c === b).length) ? a : b, null ) console.log(mode([500, 450, 400, 400, 375, 350, 325, 300])) // 400 ...

I am struggling to retrieve the value of my angular variable

I am working on an ajax request that builds an angular repeater, and I have an event html: <md-button ng-if="item[2].enderecoGlgMaps !== null" class="md-icon-button" ng-click="GeraMapa('{{item[2].nomeSlug}}');" aria-label="Localizacao-Butto ...

Switch the website title as soon as the user looks away from the tab

How can I capture the user's attention and bring them back to my website when they are on a different tab? I really like the effect used on sephora.pl where an alert pops up with the message 'What are you waiting for?' when you switch tabs. ...

Steps for exporting a module from a JavaScript file that is linked:

When I include the main.js file in my project, the code below works properly: modules.exports = { property: value } However, if I include it in a web page like this: <!DOCTYPE html> <html> <head> <script src="main.js"& ...

Checking the token's validity using the API within the AuthGuard canActivate method in Angular8

As I navigate through certain routes, I need to validate each refresh request. To achieve this, I am utilizing Angular's AuthGuard. The challenge lies in the canActivate method where I aim to perform validation using an online API. The API endpoint i ...

Error message in JQuery Ajax: "Invalid request to web service, parameter value for 'Object' is missing"

I'm struggling to successfully post a form to my web service. Before sending it to the server, I am converting the form into an object. However, I encounter an error when trying to post the form as an Object to my Asmx web service. Here is my Ajax co ...

What could be causing my ajax request to not be successfully compiled?

I seem to be experiencing an issue with this part of my code. Despite trying multiple methods, it still isn't functioning correctly. What steps can I take to resolve this problem? $.ajax({ url: "https://corona-api.com/countries/BR", ...

Animated scrolling does not function properly with external links that are fully qualified

Currently, I am working on the website julebord.bedriftsdesign.no and have added animated scroll functionality to this page: However, I have encountered a problem. The animated scroll works perfectly fine when using internal anchor links like (#myanchor). ...

Compare and contrast the functions of scrollToIndex and manual scrolling in a React Native FlatList

Currently, my FlatList is set up to automatically scroll item by item based on a time series using the scrollToIndex function. However, I also want to allow users to manually scroll through the list and temporarily pause the automatic scrolling when this ...

I'm curious, is there a method to add animation to dynamically adjust the size of the header within the HeaderFooterLayout

Looking for a way to animate the header size within a HeaderFooterLayout? I have been attempting to resize it with an animation, but it seems like there is no specific API for this. Are there any techniques or workarounds that can be used to achieve this ...

Obtain a string of characters from different words

I have been trying to come up with a unique code based on the input provided. Input = "ABC DEF GHI" The generated code would look like, "ADG" (first letter of each word) and if that is taken, then "ABDG" (first two letters o ...

Unusual actions observed in ajax rails form calculator with pre-filled values

I have a form calculator in Rails that utilizes AJAX without a database. While it functions properly, I have noticed some peculiar behavior which I would like to address. Firstly, I navigate to the /interest_calculator page Then, I input 10 into @first_0 ...

Steps to reveal a div when a button is clicked within a v-for loop using VueJS

Context In my code, I am utilizing a v-for loop to display sets of buttons and corresponding input fields. Each button is supposed to trigger the display of its respective input field upon being clicked. Issue However, the problem arises when the button ...

What is the best way to incorporate an if else condition using the <?php if($loggedin): ?> statement within JavaScript code to display a button push or pop response from the server side?

I would like to verify this php if condition code ''<?php if($loggedin) : ?>'' inside JavaScript code in order to display one of the buttons, either push or pop. I want to keep this button hidden from the client side by embedding ...

Have you opened the DIV in a separate tab yet?

Hey there! So, I've got a question for you. I've got 4 little DIV's with text inside them. At the bottom of each DIV, there's a link that says "show more". When I click on that link, I want the respective DIV to open in a new tab. Ho ...

Add information if the data does not exist, modify it if it does

My current project involves creating a TS3 bot using the Node.js Library from Multivit4min on GitHub. The purpose of this bot is to perform the following tasks: nick (txt) cldbid (int) clid (txt) lastChannel (int) Event #1 - When a client connects to a ...

Draggable Table Columns with HTML, CSS, and JavaScript

My goal is to create a table in a JSP page that functions similarly to the example shown here. I would like to be able to drag a column of dates within the table and have a form pop up. Can anyone provide guidance on how I can achieve this in JSP? ...

Delete a designated section from a URL with the power of jQuery

I have a URL like http://myurleg.com/ar/Message.html and I need to change ar to en in it when clicked on. For example, if my current URL is: http://myurleg.com/ar/Message.html After clicking, it should become: http://myurleg.com/en/Message.html I attemp ...