|
1 | 1 | /* |
2 | | - * Copyright (c) 2024 the Eclipse Milo Authors |
| 2 | + * Copyright (c) 2025 the Eclipse Milo Authors |
3 | 3 | * |
4 | 4 | * This program and the accompanying materials are made |
5 | 5 | * available under the terms of the Eclipse Public License 2.0 |
|
10 | 10 |
|
11 | 11 | package org.eclipse.milo.sdk.core.types.json; |
12 | 12 |
|
13 | | -import com.google.gson.JsonElement; |
| 13 | +import com.google.gson.JsonArray; |
14 | 14 | import com.google.gson.JsonObject; |
15 | 15 | import org.eclipse.milo.opcua.sdk.core.typetree.DataType; |
16 | 16 | import org.eclipse.milo.opcua.stack.core.UaSerializationException; |
@@ -39,20 +39,39 @@ public JsonStruct decodeType(EncodingContext context, UaDecoder decoder) |
39 | 39 | ByteString value = decoder.decodeByteString("Value"); |
40 | 40 | ByteString validBits = decoder.decodeByteString("ValidBits"); |
41 | 41 |
|
| 42 | + var valueArray = new JsonArray(); |
| 43 | + for (byte b : value.bytesOrEmpty()) { |
| 44 | + valueArray.add(JsonConversions.fromSByte(b)); |
| 45 | + } |
| 46 | + var validBitsArray = new JsonArray(); |
| 47 | + for (byte b : validBits.bytesOrEmpty()) { |
| 48 | + validBitsArray.add(JsonConversions.fromSByte(b)); |
| 49 | + } |
| 50 | + |
42 | 51 | var jsonObject = new JsonObject(); |
43 | | - jsonObject.add("Value", JsonConversions.fromByteString(value)); |
44 | | - jsonObject.add("ValidBits", JsonConversions.fromByteString(validBits)); |
| 52 | + jsonObject.add("Value", valueArray); |
| 53 | + jsonObject.add("ValidBits", validBitsArray); |
45 | 54 |
|
46 | 55 | return new JsonStruct(dataType, jsonObject); |
47 | 56 | } |
48 | 57 |
|
49 | 58 | @Override |
50 | 59 | public void encodeType(EncodingContext context, UaEncoder encoder, JsonStruct value) |
51 | 60 | throws UaSerializationException { |
52 | | - JsonElement valueElement = value.getJsonObject().get("Value"); |
53 | | - JsonElement validBitsElement = value.getJsonObject().get("ValidBits"); |
| 61 | + JsonArray valueArray = value.getJsonObject().getAsJsonArray("Value"); |
| 62 | + JsonArray validBitsArray = value.getJsonObject().getAsJsonArray("ValidBits"); |
| 63 | + |
| 64 | + byte[] valueBs = new byte[valueArray.size()]; |
| 65 | + for (int i = 0; i < valueArray.size(); i++) { |
| 66 | + valueBs[i] = JsonConversions.toSByte(valueArray.get(i)); |
| 67 | + } |
| 68 | + |
| 69 | + byte[] validBitsBs = new byte[validBitsArray.size()]; |
| 70 | + for (int i = 0; i < validBitsArray.size(); i++) { |
| 71 | + validBitsBs[i] = JsonConversions.toSByte(validBitsArray.get(i)); |
| 72 | + } |
54 | 73 |
|
55 | | - encoder.encodeByteString("Value", JsonConversions.toByteString(valueElement)); |
56 | | - encoder.encodeByteString("ValidBits", JsonConversions.toByteString(validBitsElement)); |
| 74 | + encoder.encodeByteString("Value", new ByteString(valueBs)); |
| 75 | + encoder.encodeByteString("ValidBits", new ByteString(validBitsBs)); |
57 | 76 | } |
58 | 77 | } |
0 commit comments