LibreMetaverse.StructuredData
3.2.0
Prefix Reserved
dotnet add package LibreMetaverse.StructuredData --version 3.2.0
NuGet\Install-Package LibreMetaverse.StructuredData -Version 3.2.0
<PackageReference Include="LibreMetaverse.StructuredData" Version="3.2.0" />
<PackageVersion Include="LibreMetaverse.StructuredData" Version="3.2.0" />
<PackageReference Include="LibreMetaverse.StructuredData" />
paket add LibreMetaverse.StructuredData --version 3.2.0
#r "nuget: LibreMetaverse.StructuredData, 3.2.0"
#:package LibreMetaverse.StructuredData@3.2.0
#addin nuget:?package=LibreMetaverse.StructuredData&version=3.2.0
#tool nuget:?package=LibreMetaverse.StructuredData&version=3.2.0
▗▖ ▄ ▗▖ ▄▄▄ ▗▞▀▚▖▗▖ ▗▖▗▞▀▚▖ ■ ▗▞▀▜▌▄ ▄ ▗▞▀▚▖ ▄▄▄ ▄▄▄ ▗▞▀▚▖
▐▌ ▄ ▐▌ █ ▐▛▀▀▘▐▛▚▞▜▌▐▛▀▀▘▗▄▟▙▄▖▝▚▄▟▌█ █ ▐▛▀▀▘█ ▀▄▄ ▐▛▀▀▘
▐▌ █ ▐▛▀▚▖█ ▝▚▄▄▖▐▌ ▐▌▝▚▄▄▖ ▐▌ ▀▄▀ ▝▚▄▄▖█ ▄▄▄▀ ▝▚▄▄▖
▐▙▄▄▖█ ▐▙▄▞▘ ▐▌ ▐▌ ▐▌
▐▌
LibreMetaverse.StructuredData
LLSD, the Linden Lab Structured Data format that Second Life and OpenSimulator use for capabilities, login, inventory and most of what is not a UDP packet. This package parses and writes it in each of its encodings and gives you one tree to work with whichever form it came in.
Archiving · Utilities · Voice.Vivox · Voice.WebRTC
│ built on the client
LibreMetaverse the client: login, managers, inventory
│
Transport UDP socket, reliable circuit, throttle
│
Protocol packets and capability messages
│
Assets the offline data model
├── ModelFormats · Rendering.MeshFoundry · Rendering.Simple
│
[StructuredData] · Imaging.Abstractions
│
Types UUID, vectors, quaternions, colors
on their own: PrimMesher · Imaging.Skia · RLV · LslTools
A name in brackets is this package. Packages use the ones beneath them; the Depends on section below is exact.
What is in it
- The tree:
OSDand its kinds,OSDMap,OSDArray,OSDString,OSDInteger,OSDReal,OSDBoolean,OSDUUID,OSDDate,OSDUriandOSDBinary. The conversion methods (AsString(),AsInteger(),AsUUID(),AsVector3()and so on) are on every kind, and a kind that cannot be converted gives the type's default (zero, an empty string,UUID.Zero) instead of throwing. - The formats:
OSDParserreads and writes LLSD XML, binary, notation, JSON and the protobuf encoding, from strings, byte arrays and streams.OSDFormatnames the three (XML, JSON, binary) that capabilities exchange. - Errors:
OSDExceptionfor input that is not valid in the format asked for.
Example
using LibreMetaverse.StructuredData;
OSD parsed = OSDParser.Deserialize("<llsd><map><key>name</key><string>Ahern</string></map></llsd>");
var map = (OSDMap)parsed;
map["visits"] = OSD.FromInteger(3);
string json = OSDParser.SerializeJsonString(map);
byte[] binary = OSDParser.SerializeLLSDBinary(map);
Console.WriteLine($"{map["name"].AsString()}: {json.Length} chars as JSON, {binary.Length} bytes as binary");
OSDParser.Deserialize tells XML, binary, protobuf and JSON apart from the start of the data, so the same call reads a capability reply whichever of those the server chose. Notation has its own call, DeserializeLLSDNotation.
Use it when
You are talking to a grid's HTTP services without the client, writing a tool that inspects or converts LLSD (the repository's OSDInspector does this), or building the server side of a capability. It depends only on LibreMetaverse.Types.
Depends on
.NET Standard 2.1, .NET Framework 4.8.1, and .NET 8, 9 and 10. It uses System.Text.Json for the JSON form, and Microsoft.Bcl.AsyncInterfaces on the older targets.
Install
dotnet add package LibreMetaverse.StructuredData
More
- Source, issues and discussion: https://github.com/cinderblocks/libremetaverse
- Moving from 3.1: the migration guide
- License: BSD-3-Clause
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net481 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8.1
- LibreMetaverse.Types (>= 3.2.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
.NETStandard 2.1
- LibreMetaverse.Types (>= 3.2.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
net10.0
- LibreMetaverse.Types (>= 3.2.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.12)
-
net8.0
- LibreMetaverse.Types (>= 3.2.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
net9.0
- LibreMetaverse.Types (>= 3.2.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on LibreMetaverse.StructuredData:
| Package | Downloads |
|---|---|
|
LibreMetaverse
LibreMetaverse is a .NET client library for connecting to and interacting with Second Life, OpenSimulator, and compatible virtual world servers. Provides networking, inventory, avatar, asset, and world management APIs. |
|
|
LibreMetaverse.Rendering.Meshmerizer
Advanced mesh rendering library for LibreMetaverse that uses the Meshmerizer engine to generate renderable geometry from Second Life prims, sculpts, and mesh assets. |
|
|
LibreMetaverse.Utilities
Helpers on top of the LibreMetaverse client for bots and unattended agents: a persistent login that retries through grid outages, a monitor that keeps an avatar in a region, and typed-out chat with the typing animation. |
|
|
LibreMetaverse.Voice.Vivox
Vivox voice chat integration library for LibreMetaverse, enabling connection and communication with the Vivox voice service used by Second Life and other virtual worlds. |
|
|
LibreMetaverse.Voice
Library interface for Vivox voice client |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.2.0 | 0 | 10/13/2026 |
| 3.1.8 | 393 | 10/6/2026 |
| 3.1.7 | 314 | 10/4/2026 |
| 3.1.6 | 3,281 | 9/14/2026 |
| 3.1.5 | 1,026 | 9/3/2026 |
| 3.1.4 | 356 | 8/26/2026 |
| 3.1.3 | 2,059 | 7/24/2026 |
| 3.1.2 | 403 | 7/21/2026 |
| 3.1.1 | 557 | 7/14/2026 |
| 3.1.0 | 596 | 7/11/2026 |
| 3.0.4 | 458 | 7/9/2026 |
| 3.0.3 | 565 | 7/3/2026 |
| 3.0.2 | 393 | 6/29/2026 |
| 3.0.1 | 384 | 6/27/2026 |
| 3.0.0 | 605 | 6/23/2026 |
| 2.6.10 | 663 | 6/20/2026 |
| 2.6.9 | 528 | 6/8/2026 |
| 2.6.8 | 431 | 6/7/2026 |
| 2.6.7 | 652 | 5/14/2026 |
| 2.6.6 | 735 | 4/12/2026 |