es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Analice el documento JSON basado en el documento de mapeo JSON predefinido en Java.

Quiero saber si existe alguna librería en Java que pueda utilizar para filtrar un documento JSON basado en un documento de asignación JSON predefinido, o si la única forma de lograr esto es escribir código Java personalizado.

Si es necesario escribir código Java personalizado, ¿qué tipo de patrón de diseño o estructura de datos debo seguir? Cualquier consejo será muy apreciado.

Ejemplo –

Documento JSON de entrada –

{
“basicInfo”:{
“name”:”name”,
“age”:”25″,
“address”:”address”
},
“education”:[
{
“ug”:{
“unversity”:”university”,
“major”:[
“cs”,
“ds”
],
“year”:”2012″
},
“pg”:{
“unversity”:”university”,
“major”:[
“cs”,
“ds”
],
“year”:”2015″
}
}
]
}

Documento de asignación JSON predefinido (puede definirse en cualquier formato JSON, a continuación se muestra un ejemplo que he creado) –

{
“definitions”:{
“basicInfo”:{
“maxOccurance”:”1″,
“fields”:[
{
“key”:”name”,
“type”:”S”,
“lenght”:”50″,
“usage”:”M”,
“maxOccurrance”:”1″
},
{
“key”:”age”,
“type”:”S”,
“lenght”:”3″,
“usage”:”O”,
“maxOccurrance”:”1″
}
]
},
“education”:{
“maxOccurance”:”10″,
“fields”:[
{
“pg”:{
“maxOccurance”:”1″,
“fields”:[
{
“key”:”university”,
“type”:”S”,
“lenght”:”50″,
“usage”:”M”,
“maxOccurrance”:”1″
},
{
“key”:”major”,
“type”:”S”,
“lenght”:”3″,
“usage”:”O”,
“maxOccurrance”:”1″
}
]
}
}
]
}
}
}

Documento JSON de salida esperado:

{
“basicInfo”:{
“name”:”name”,
“age”:”25″
},
“education”:[
{
“pg”:{
“unversity”:”university”,
“major”:”cs”
}
}
]
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay varias bibliotecas en Java que se pueden utilizar para filtrar un documento JSON basado en un documento de asignación predefinido. Una de estas bibliotecas es JSONPath, que es un lenguaje de expresión similar a XPath para JSON que le permite extraer datos utilizando una expresión de JSONPath.

    Para usar JSONPath, puedes definir un documento de asignación en el formato de expresión de JSONPath y luego usar la biblioteca para extraer los datos del documento JSON de entrada. Por ejemplo, la expresión de JSONPath para extraer los campos “nombre” y “edad” del objeto “basicInfo” en el documento de entrada sería “$.basicInfo.[nombre,edad]”.

    Si JSONPath no cumple tus requisitos, también puedes escribir código Java personalizado para filtrar el documento JSON basado en el documento de asignación predefinido. Para hacerlo, podrías usar una combinación de una estructura de datos de árbol y el patrón de diseño de visitante.

    La estructura de datos de árbol representaría el documento JSON como una jerarquía de nodos, donde cada nodo representa un objeto, matriz o valor JSON. El patrón de diseño de visitante te permitiría recorrer el árbol y aplicar un algoritmo de filtrado a los nodos basado en el documento de asignación.

    Por ejemplo, podrías definir una clase visitante que coincida con los campos y restricciones definidos en el documento de asignación y luego recorrer el documento JSON de entrada utilizando un algoritmo de búsqueda en profundidad. A medida que visitas cada nodo en el árbol, podrías aplicar el visitante para filtrar los datos basados en el documento de asignación y construir un documento JSON de salida filtrado.

    En general, la elección de la biblioteca o del código personalizado dependerá de la complejidad del documento de asignación y de los requisitos específicos de tu aplicación. JSONPath puede ser suficiente para mapeos simples, mientras que el código personalizado puede ser necesario para mapeos más complejos o para la integración con otras partes de tu aplicación.

Comments are closed.