Code Monkey home page Code Monkey logo

Comments (9)

TinusgragLin avatar TinusgragLin commented on July 23, 2024

Can not reproduce this on my end. Using the latest version of serde and serde_json and this simple test code:

use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Test {
    sds: String
}
fn main() {
    let test = Test { sds: "sds".to_string() };
    let res = serde_json::to_string(&test).unwrap();
    println!("{}", res);
}

yields:

{"sds":"sds"}

as expected, please provide more information and perhaps an simple example illustrating your issue.

from json.

kwsc98 avatar kwsc98 commented on July 23, 2024

like

    let str = "sds";
    let str_json = serde_json::to_string(str).unwrap();
    println!("{:?}", str_json); //   "\"sds\""
    let res: Result<String, serde_json::Error> = serde_json::from_str(str);
    println!("{:?}", res); //  Err(Error("expected value", line: 1, column: 1))

from json.

TinusgragLin avatar TinusgragLin commented on July 23, 2024

serde_json::from_str() deserialize a structure from a json string. I don't think

sds

is a valid json string.

from json.

TinusgragLin avatar TinusgragLin commented on July 23, 2024

Oh, I guess you have confused "the string type in json" (i.e. the "value" in {"field": "value"}) with "a string that is in the json format" (i.e. {"field": "value"} as a whole), am I right?

It's indeed better for serde_json::{to_string, from_str} to be renamed to serde_json::{to_json, from_json} IMO, but that would be a breaking change and the documentation clarifies things most of the time anyway.

from json.

kwsc98 avatar kwsc98 commented on July 23, 2024

I have a project that communicates with Java projects, and in some Java json parsing libraries, the String type is treated directly as
sds
Instead of
\"sds\"
so

let res: Result<String, serde_json::Error> = serde_json::from_str("sds");
println!("{:?}", res); //  Err(Error("expected value", line: 1, column: 1))

let res: Result<String, serde_json::Error> = serde_json::from_str("\"sds\"");
println!("{:?}", res); //  Ok("sds")

Now I receive a Java response that I must process before I can use serde_json
like

pub fn json_field_compatible(ty: &str, mut field: String) -> String {
    if ty == "String" && !field.starts_with("\"") {
        field.insert(0, '\"');
        field.insert(field.len(), '\"');
    }
    field
}

from json.

TinusgragLin avatar TinusgragLin commented on July 23, 2024

... the String type treated directly as sds instead of "sds"

Such implementation would be incompatible with the JSON format specification, as both RFC 8259 and ECMA-404 define string as:

'"' characters '"'

Here is a simple JSON format verifier if you don't want to look into the specs (remember to uncheck the Fix JSON option as this will enable auto-correction).

from json.

kwsc98 avatar kwsc98 commented on July 23, 2024

i know , so i hope have like a "Fix JSON" Feature,

from json.

TinusgragLin avatar TinusgragLin commented on July 23, 2024

In that case, you probably should change your title to "Feature request: apply simple auto-corrections when deserialize", though I don't think that would be accepted.

from json.

dtolnay avatar dtolnay commented on July 23, 2024

Deserializing things other than JSON is out of scope for this library.

from json.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.